{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 经典又兼具备趣味性的Kaggle案例[泰坦尼克号问题](https://www.kaggle.com/c/titanic)\n",
    "大家都熟悉的『Jack and Rose』的故事，豪华游艇倒了，大家都惊恐逃生，可是救生艇的数量有限，无法人人都有，副船长发话了『lady and kid first！』，所以是否获救其实并非随机，而是基于一些背景有rank先后的。<br>\n",
    "训练和测试数据是一些乘客的个人信息以及存活状况，要尝试根据它生成合适的模型并预测其他人的存活状况。<br>\n",
    "对，这是一个二分类问题，很多分类算法都可以解决。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**<font color=red>看看数据长什么样</font>**<br>\n",
    "还是用pandas加载数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp',\n",
       "       'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 这个ipython notebook主要是我解决Kaggle Titanic问题的思路和过程\n",
    "\n",
    "import pandas as pd #数据分析\n",
    "import numpy as np #科学计算\n",
    "from pandas import Series,DataFrame\n",
    "\n",
    "data_train = pd.read_csv(\"Train.csv\")\n",
    "data_train.columns # 以列表的形式返回列"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**<font color=red>我们看大概有以下这些字段</font>**<br>\n",
    "PassengerId => 乘客ID<br>\n",
    "Pclass => 乘客等级(1/2/3等舱位)<br>\n",
    "Name => 乘客姓名<br>\n",
    "Sex => 性别<br>\n",
    "Age => 年龄<br>\n",
    "SibSp => 堂兄弟/妹个数<br>\n",
    "Parch => 父母与小孩个数<br>\n",
    "Ticket => 船票信息<br>\n",
    "Fare => 票价<br>\n",
    "Cabin => 客舱<br>\n",
    "Embarked => 登船港口"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    549\n",
       "1    342\n",
       "Name: Survived, dtype: int64"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# data_train.Survived.value_counts().plot(kind='bar')# plots a bar graph of those who surived vs those who did not. \n",
    "# 统计Survived列的值\n",
    "data_train.Survived.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 获取Cabin列数据为非空的所有列值\n",
    "# data_train[data_train.Cabin.notnull()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 获取Cabin列数据为空的所有列值\n",
    "# data_train[data_train.Cabin.isnull()]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1    136\n",
       "0     68\n",
       "Name: Survived, dtype: int64"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_train[data_train.Cabin.notnull()]['Survived'].value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "由上面的代码可知，在`Cabin`列数据为非空的前提下，共有136人存活，68人死亡。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**<font color=red>先让pandas自己告诉我一些信息<font>**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 891 entries, 0 to 890\n",
      "Data columns (total 12 columns):\n",
      "PassengerId    891 non-null int64\n",
      "Survived       891 non-null int64\n",
      "Pclass         891 non-null int64\n",
      "Name           891 non-null object\n",
      "Sex            891 non-null object\n",
      "Age            714 non-null float64\n",
      "SibSp          891 non-null int64\n",
      "Parch          891 non-null int64\n",
      "Ticket         891 non-null object\n",
      "Fare           891 non-null float64\n",
      "Cabin          204 non-null object\n",
      "Embarked       889 non-null object\n",
      "dtypes: float64(2), int64(5), object(5)\n",
      "memory usage: 83.6+ KB\n"
     ]
    }
   ],
   "source": [
    "data_train.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font color=red>它告诉我们，训练数据中总共有891名乘客，但是很操蛋的是，有些属性的数据不全，比如说：<font><br>\n",
    "\n",
    "* <font color=red>Age（年龄）属性只有714名乘客有记录<font>\n",
    "* <font color=red>Cabin（客舱）更是只有204名乘客是已知的<font>\n",
    "\n",
    "<font color=red>用下列的方法，得到数值型数据的一些分布(因为有些属性，比如姓名，是文本型；而另外一些属性，比如登船港口，是类目型。这些我们用下面的函数是看不到的)<font>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>714.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>446.000000</td>\n",
       "      <td>0.383838</td>\n",
       "      <td>2.308642</td>\n",
       "      <td>29.699118</td>\n",
       "      <td>0.523008</td>\n",
       "      <td>0.381594</td>\n",
       "      <td>32.204208</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>257.353842</td>\n",
       "      <td>0.486592</td>\n",
       "      <td>0.836071</td>\n",
       "      <td>14.526497</td>\n",
       "      <td>1.102743</td>\n",
       "      <td>0.806057</td>\n",
       "      <td>49.693429</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.420000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>223.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>20.125000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>7.910400</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>446.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>28.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>14.454200</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>668.500000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>38.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>31.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>891.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>80.000000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>512.329200</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       PassengerId    Survived      Pclass         Age       SibSp  \\\n",
       "count   891.000000  891.000000  891.000000  714.000000  891.000000   \n",
       "mean    446.000000    0.383838    2.308642   29.699118    0.523008   \n",
       "std     257.353842    0.486592    0.836071   14.526497    1.102743   \n",
       "min       1.000000    0.000000    1.000000    0.420000    0.000000   \n",
       "25%     223.500000    0.000000    2.000000   20.125000    0.000000   \n",
       "50%     446.000000    0.000000    3.000000   28.000000    0.000000   \n",
       "75%     668.500000    1.000000    3.000000   38.000000    1.000000   \n",
       "max     891.000000    1.000000    3.000000   80.000000    8.000000   \n",
       "\n",
       "            Parch        Fare  \n",
       "count  891.000000  891.000000  \n",
       "mean     0.381594   32.204208  \n",
       "std      0.806057   49.693429  \n",
       "min      0.000000    0.000000  \n",
       "25%      0.000000    7.910400  \n",
       "50%      0.000000   14.454200  \n",
       "75%      0.000000   31.000000  \n",
       "max      6.000000  512.329200  "
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_train.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**四分位数：**  \n",
    "四分位数（Quartile）是统计学中分位数的一种，即把所有数值由小到大排列并分成四等份，处于三个分割点位置的数值就是四分位数。  \n",
    "- 第一四分位数(Q1)，又称“较小四分位数”，等于该样本中所有数值由小到大排列后第25%的数字；   \n",
    "- 第二四分位数(Q2)，又称“中位数”，等于该样本中所有数值由小到大排列后第50%的数字；   \n",
    "- 第三四分位数(Q3)，又称“较大四分位数”，等于该样本中所有数值由小到大排列后第75%的数字。  \n",
    "第三四分位数与第一四分位数的差距又称四分位距。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font color=red>mean(平均数)字段告诉我们，大概0.383838的人最后获救了；  \n",
    "    Q2（第二四分位数）告诉我们，二三等舱的人数比一等舱要多；  \n",
    "    [mean,Age]告诉我们，平均乘客年龄大概是29.7岁(计算这个时候会略掉无记录的)等等…<font>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* <font color=red>『对数据的认识太重要了！』<font>\n",
    "* <font color=red>『对数据的认识太重要了！』<font>\n",
    "* <font color=red>『对数据的认识太重要了！』<font>\n",
    "\n",
    "<font color=red>重要的事情喊三遍，然而上面的简单描述信息并没有什么卵用啊，还得再细一点分析数据。<font><br>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 看看每个/多个属性和最后的Survived之间有着什么样的关系"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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wMItC2lQqwHtG7YP2zIu7nwxU9dOZebaGQzalQU/joGN86EgH5p3geOuhN43Q626YYtBREREREqnPogiAsDibYtJaJpQ4mANodKvZT+axzblkxl/ggnDICcT+twG/f8IdZrB1MfhlVND/6w3EREREQmK7iCKCDl5OazYsYJhPYaFdTlRu7dxQeYO3ozJZ8tZT9I86XaIiPwtQdp0+OgWeGMwXPcxxB/xrbREREREjii6gygiLNu+jHyXT49mPcK3kL274J1LuShzK/lmfFq/3v6VQ4AOA+CmaVCnKYy/BLYe+PBqEREREQkfVRBFhNStqQDhrSB+/kfIWEy7S97i+BbH8/GKjylxkKyGrWDIRK/y+P61XsVSRERERA4JVRBFhNRtqbSo3YIWdVqEaQH/hYXven0NO5/ORZ0uIj07nUVbS+lr2KgNXPY6bFnm9UsUERERkUNCFUQRYfHWxeG7e5iTBV88CC2Ph/73AzCo7SCiI6L5YvUXpefrOBCSRsDcf8PaH8MTm4iUKScnh969e3PccceRkJDAY489Vmra5cuXM3jwYDp16kS3bt24/PLLycjIYPr06Zx33nlhi3HUW2GqtAAAIABJREFUqFF07dqVHj16cNxxxzFu3Lgy0w8YMICSHt8wceJEnnnmmXCFKSJyxFAFUaSGy96XTXp2evgqiN88Dbu3wHnPFj3rsEGtBvSP78/k9MnkF+SXnve0h6Fha/jsPu95iSJySMXExDBt2jQWLlxISkoKkydP5scfD7xgk5OTw7nnnsutt97KypUrWbp0KbfeeitbtmwJa3xjxoxhypQpzJkzh9TUVGbOnFly0/UgXHDBBTz44IMhjlBE5MijUUxFargl25YAkNAsIfSF71jj3QE8YQi0/N1+s85pfw5fr/2auRlz6RPXp+T8MfXg9Mfgv8Nh0Ydw3BWhj1HkCPH3OX9n2fZlIS2za5OuPND7gVLnmxn16tUDIDc3l9zc3BIfhfPuu+/St29fzj///KJpAwcOBGD69OlF0+bMmcPIkSPZs2cPtWvX5o033qBLly4sXryYG264gX379lFQUMB///tfWrZsyeWXX8769evJz8/nkUce4Yor9t8HPPXUU3zzzTc0aNAAgIYNGzJkyBAAnnjiCT799FP27NlDv379eOWVV4pif/vtt7nrrrvIzs7m9ddfp3fv3rz55psk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\n",
      "text/plain": [
       "<Figure size 1080x720 with 5 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import pandas as pd #数据分析\n",
    "import numpy as np #科学计算\n",
    "from pandas import Series,DataFrame\n",
    "\n",
    "data_train = pd.read_csv(\"Train.csv\")\n",
    "\n",
    "fig = plt.figure(figsize=(15,10))\n",
    "# fig.set(alpha=0.2)  # 设定图表颜色alpha参数(透明度)\n",
    "fig.set(alpha=9)  # 设定图表颜色alpha参数\n",
    "\n",
    "\n",
    "plt.subplot2grid((2,3),(0,0))  # 在一张大图里分列几个小图：2行3列的(0,0)位置\n",
    "data_train.Survived.value_counts().plot(kind='bar') # plots a bar graph of those who surived vs those who did not. \n",
    "plt.title(u\"Rescue situation(1 is rescued)\") # 获救情况 (1为获救) puts a title on our graph\n",
    "plt.ylabel(u\"number of people\") # 人数\n",
    "\n",
    "\n",
    "plt.subplot2grid((2,3),(0,1))\n",
    "data_train.Pclass.value_counts().plot(kind=\"bar\") # plots a bar graph of passenger's rank distribution. \n",
    "plt.ylabel(u\"number of people\") # 人数\n",
    "plt.title(u\"Pclass distribution\") # 乘客等级分布\n",
    "\n",
    "\n",
    "plt.subplot2grid((2,3),(0,2))\n",
    "plt.scatter(data_train.Survived, data_train.Age) # (x,y)\n",
    "plt.ylabel(u\"Age\") # 年龄                       \n",
    "plt.grid(b=True, which='major', axis='y') # formats the grid line style of our graphs\n",
    "plt.title(u\"Rescue situation Through Age\") # 按年龄看获救分布 (1为获救)\n",
    "\n",
    "\n",
    "plt.subplot2grid((2,3),(1,0), colspan=2) # 列跨度为2\n",
    "# plots a kernel desnsity estimate（核密度估计） of the subset of the 1st class passanges's age\n",
    "# https://blog.csdn.net/yuanxing14/article/details/41948485\n",
    "data_train.Age[data_train.Pclass == 1].plot(kind='kde')   \n",
    "data_train.Age[data_train.Pclass == 2].plot(kind='kde')\n",
    "data_train.Age[data_train.Pclass == 3].plot(kind='kde')\n",
    "plt.xlabel(u\"Age\") # 年龄\n",
    "plt.ylabel(u\"Density\")  # 密度\n",
    "plt.title(u\"Passenger's Age Distribution of each Pclass\") # 各等级的乘客年龄分布\n",
    "plt.legend((u'1-Class Cabin', u'2-Class Cabin',u'3-Class Cabin'),loc='best')  # sets our legend for our graph.\n",
    "# plt.plot('r--','y--','b--')\n",
    "\n",
    "plt.subplot2grid((2,3),(1,2))\n",
    "data_train.Embarked.value_counts().plot(kind='bar') # plots a bar graph of People's number of each Embarked\n",
    "plt.title(u\"People's number of each Embarked\") # 各登船口岸上船人数\n",
    "plt.ylabel(u\"number of people\")  # 人数\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font color=red>bingo，图还是比数字好看多了。所以我们在图上可以看出来:<font><br>\n",
    "* <font color=red>被救的人300多点，不到半数；<font><br>\n",
    "* <font color=red>3等舱乘客灰常多；遇难和获救的人年龄似乎跨度都很广；<font><br>\n",
    "* <font color=red>3个不同的舱年龄总体趋势似乎也一致，2、3等舱乘客20岁多点的人最多，1等舱40岁左右的最多(→_→似乎符合财富和年龄的分配哈，咳咳，别理我，我瞎扯的)；<font><br>\n",
    "* <font color=red>登船港口人数按照S、C、Q递减，而且S远多于另外俩港口。<font><br><br>\n",
    "\n",
    "<font color=red>这个时候我们可能会有一些想法了：<font><br><br>\n",
    "\n",
    "1. <font color=red>不同舱位/乘客等级可能和财富/地位有关系，最后获救概率可能会不一样<font><br>\n",
    "2. <font color=red>年龄对获救概率也一定是有影响的，毕竟前面说了，副船长还说『小孩和女士先走』呢<font><br>\n",
    "3. <font color=red>和登船港口是不是有关系呢？也许登船港口不同，人的出身地位不同？<font><br>\n",
    "\n",
    "<font color=red>口说无凭，空想无益。老老实实再来统计统计，看看这些属性值的统计分布吧。<font>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 看看各乘客等级的获救情况"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3    372\n",
       "2     97\n",
       "1     80\n",
       "Name: Pclass, dtype: int64"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "Survived_0 = data_train.Pclass[data_train.Survived == 0].value_counts()\n",
    "Survived_1 = data_train.Pclass[data_train.Survived == 1].value_counts()\n",
    "Survived_0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1    136\n",
       "3    119\n",
       "2     87\n",
       "Name: Pclass, dtype: int64"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Survived_1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>rescued</th>\n",
       "      <th>unrescued</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>136</td>\n",
       "      <td>80</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>87</td>\n",
       "      <td>97</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>119</td>\n",
       "      <td>372</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   rescued  unrescued\n",
       "1      136         80\n",
       "2       87         97\n",
       "3      119        372"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df=pd.DataFrame({u'rescued':Survived_1, u'unrescued':Survived_0})\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 1080x444.96 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "#看看各乘客等级的获救情况\n",
    "fig = plt.figure(figsize=(15,6.18))\n",
    "fig.set(alpha=0.1)  # 设定图表颜色alpha参数\n",
    "\n",
    "Survived_0 = data_train.Pclass[data_train.Survived == 0].value_counts()\n",
    "Survived_1 = data_train.Pclass[data_train.Survived == 1].value_counts()\n",
    "\n",
    "df=pd.DataFrame({u'rescued':Survived_1, u'unrescued':Survived_0})\n",
    "# df.plot(kind='bar', stacked=True)\n",
    "df.plot(kind='bar', stacked=False)\n",
    "\n",
    "plt.title(u\"Rescue situation of each PClass\") # 各乘客等级的获救情况\n",
    "plt.xlabel(u\"PClass\") # 乘客等级\n",
    "plt.ylabel(u\"Number of People\") #人数\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font color=red>啧啧，果然，钱和地位对舱位有影响，进而对获救的可能性也有影响啊←_← <font><br>\n",
    "<font color=red>咳咳，跑题了，我想说的是，明显等级为1的乘客，获救的概率高很多。恩，这个一定是影响最后获救结果的一个特征。<font>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 看看各登录港口的获救情况"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "S    427\n",
       "C     75\n",
       "Q     47\n",
       "Name: Embarked, dtype: int64"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Survived_0 = data_train.Embarked[data_train.Survived == 0].value_counts()\n",
    "Survived_1 = data_train.Embarked[data_train.Survived == 1].value_counts()\n",
    "Survived_0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "S    217\n",
       "C     93\n",
       "Q     30\n",
       "Name: Embarked, dtype: int64"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Survived_1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>rescued</th>\n",
       "      <th>unrescued</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>S</th>\n",
       "      <td>217</td>\n",
       "      <td>427</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>93</td>\n",
       "      <td>75</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Q</th>\n",
       "      <td>30</td>\n",
       "      <td>47</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   rescued  unrescued\n",
       "S      217        427\n",
       "C       93         75\n",
       "Q       30         47"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df=pd.DataFrame({u'rescued':Survived_1, u'unrescued':Survived_0})\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 1080x576 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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UPfchx56KBdccAEDBw5kzz335OGHHwZg7NixjBgxgmOPPZYjjzwSgJ/+9KcMGDCAPn36cPHFFwPw1ltvccwxx9C3b1/2228/Jk6cCMCTTz7Jpz/9afr27cvAgQNZuXIlY8eO5eyzz14fw7Bhw5g6dSoA9913X27343/84x/Za6+9OPjgg7njjjvK8t5UIvVdAEyQdBnwFDAmlY8BbpU0n+zI4SsViM3MbL01a9Ywbdo07r33Xi699FImT54MwOOPP87s2bPp1KkT9913Hy+88ALTpk0jIvjiF7/IQw89xNKlS9lll124555sEKQVK1bw3nvvceKJJzJx4kQGDBjAm2++Sfv27Rvc/2uvvcZll13G5MmT2Xbbbbnyyiu55pprOP/88znzzDOZMmUKe+yxByeeeGJZXn+LJIiImApMTdMvAQNz6rwLjKhfbmZWKSeccAIABx54IAsWLFhffsQRR9CpUycg+4V/3333ccABBwBZt94vvPACQ4cO5bzzzuOCCy5g2LBhDB06lGeeeYauXbsyYMAAIOvArzFPPPFEbvfj8+bNo1evXvTu3RuAk08+mdGjRzfrawd3921mrVxD3XMDbL311kA21sOaNWvWl9d1Dw5Zr6wXXnghX//61z+y7RkzZnDvvfdy4YUXcuSRRzJ8+PDcbr0biqGh7sdnzZrVIt2Du6sNM2vVGuqeu6jPf/7z3HzzzevPDbzyyissWbKERYsWsc0223DyySdz3nnnMXPmTPbaay8WLVrEk08+CcDKlStZs2YNPXv2ZNasWaxbt46FCxcybdo0oOHux/faay9efvllXnzxRYDc8Suag48gzKxVK+2eu1evXh/qnruII488krlz5zJ48GAAtttuO379618zf/58vve979GmTRvatm3LTTfdxFZbbcXEiRP51re+xTvvvEP79u2ZPHkyQ4YMoVevXuy///7st99+9O/fH/hw9+N1o89ddtll7LnnnowePZpjjjmGzp07c/DBB/Pss8827xuDu/uubu7u2zZz7u67/Nzdt5mZNTsnCDMzy+UEYWZmuZwgzKyiNuXzoNXu4763ThBmVjHt2rVj2bJlThJlEBEsW7aMdu3abfQ2fJmrmVVM9+7dqa2txV33l0e7du3o3r37Rq/vBGFmFdO2bVt69epV6TCsAW5iMjOzXE4QZmaWywnCzMxyOUGYmVmu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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#看看各登录港口的获救情况\n",
    "fig = plt.figure(figsize=(15,8))\n",
    "fig.set(alpha=0.2)  # 设定图表颜色alpha参数\n",
    "\n",
    "Survived_0 = data_train.Embarked[data_train.Survived == 0].value_counts()\n",
    "Survived_1 = data_train.Embarked[data_train.Survived == 1].value_counts()\n",
    "\n",
    "df=pd.DataFrame({u'rescued':Survived_1, u'unrescued':Survived_0})\n",
    "# df.plot(kind='bar', stacked=True)\n",
    "df.plot(kind='bar')\n",
    "\n",
    "plt.title(u\"Rescue situation of each Embarked\") # 各登录港口乘客的获救情况\n",
    "plt.xlabel(u\"Embarked\") # 登录港口\n",
    "plt.ylabel(u\"number of people\") # 人数\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font color=red>并没有看出什么...<font><br>\n",
    "\n",
    "<font color=red>那个，看看性别好了<font><br>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 看看各性别的获救情况"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    468\n",
       "1    109\n",
       "Name: Survived, dtype: int64"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "Survived_m = data_train.Survived[data_train.Sex == 'male'].value_counts()\n",
    "Survived_f = data_train.Survived[data_train.Sex == 'female'].value_counts()\n",
    "Survived_m"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1    233\n",
       "0     81\n",
       "Name: Survived, dtype: int64"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 468+109+233+81=891\n",
    "Survived_f"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 432x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "#看看各性别的获救情况\n",
    "fig = plt.figure()\n",
    "fig.set(alpha=0.2)  # 设定图表颜色alpha参数\n",
    "\n",
    "Survived_m = data_train.Survived[data_train.Sex == 'male'].value_counts()\n",
    "Survived_f = data_train.Survived[data_train.Sex == 'female'].value_counts()\n",
    "\n",
    "df=pd.DataFrame({u'male':Survived_m, u'fmale':Survived_f})\n",
    "# df.plot(kind='bar', stacked=True)\n",
    "df.plot(kind='bar')\n",
    "\n",
    "plt.title(u\"Rescue situation of gender\") # 按性别看获救情况\n",
    "plt.xlabel(u\"gender\") # 性别\n",
    "plt.ylabel(u\"number of people\") # 人数\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "0: rescued  \n",
    "1: unrescued"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font color=red>歪果盆友果然很尊重lady，lady first践行得不错。性别无疑也要作为重要特征加入最后的模型之中。<font><br>\n",
    "<font color=red>再来个详细版的好了<font><br>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 看看不同等级船舱下各性别的获救情况"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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9tgj1113XZ73vOdl1qxZC+w/99xz85znPCdvf/vbF1rHv/7rvy70s9X87TriiCOy/fbbZ/bs2Tn66KPziU98Iklyww035EMf+lAeeuihVFUOOOCAnH322bnggguWqG54tjrkU5cMaX0//vhrhrS++T2T/unFL35xJk2alC222GLI2rAm90UCI9YIX/ziF/OjH/1ohS02+B//8R859NBDM3PmzIWWufTSS4f0mJ/5zGdy5JFH5rLLLsuf/MmfZMqUKTn33HNz+eWX54Ybbsgmm2ySGTNm5Hvf+96QHhdYNiurf1pe9EXAYO67775stdVWWXfddRda5t3vfveQHvPAAw/MD3/4wzzxxBMZM2ZMXvva12bEiBF505velPPPPz/77rtvWmu56KKLFvmZDVizLUn/tCzW5L7IlDRWe+9+97tz77335nWve1023XTTHHfccXn1q1+dkSNH5jvf+U4+8pGPZJdddsmhhx6ap556Kkly2mmnZc8998zo0aMzYcKEtNYWqPemm27Ky172suyxxx455JBDMn36//1F8Kc//Wle+cpXJkkefPDBHHroodlxxx3zkY98ZF6ZkSNH5ne/+12S5FOf+lRe+tKX5lWvelWOOeaYnHXWWfPK/fu//3v22muvvPjFL84111yz2PMdP358pk6dmiQ544wz8sUvfjGbbLJJksw7//mddNJJGTduXEaNGjUv8U6SU045JTvvvHN23XXXfOhDH5rXntGjR2e33XbL+PHjF9seYOFWdv8016OPPprXv/712XXXXbPPPvtkypQpSZJddtkljz32WFpr2XzzzfP1r389SfK2t70tP/nJTxZ5bvoiWH3cd999eelLX5p3vetdGT16dI499tj85Cc/yf77758dd9wxN9xwQ2644Ybst99+GTt2bPbbb7/cddddC9TzxBNP5B3veEf23HPPjB07Nt///vfn7fvRj37UCav/8i//Mrvttlv22WefPPTQQ0mSU089dd5noBtvvDG77rpr9t1333z4wx/O6NGj5712YZ+tFmbDDTfMHnvskXvuuSfnnHNOjjvuuHmjH6sqRx55ZF7wghd0XvODH/wge++9d8aOHZtXvvKV89p41VVXZcyYMRkzZkzGjh2bmTNnZvr06Rk/fnzGjBmT0aNHL9HnNWDJrIz+aa7PfvazGT16dEaPHp3Pf/7zSZIzzzwzZ599dpLkAx/4QF7xilck6X2+eutb37rIc1kT+yKBEau9c889Ny984QtzxRVX5AMf+EDuueeeXHLJJfn+97+ft771rXn5y1+eW2+9NRtssEEuuaQ3zPLkk0/OjTfemNtuuy2///3vFxjG+NRTT+V973tfLrzwwtx00015xzvekb/8y79Mkvzud7/LsGHDsummmyZJJk+enG9/+9u59dZb8+1vfzsPPPBAp65Jkybloosuys0335zvfOc7mTSpOyVmzpw5ueGGG/L5z38+n/zkJxd7vj/4wQ+yyy67ZObMmZk5c2Ze9KIXLfY1p59+eiZNmpQpU6bkqquuypQpU/Loo4/mu9/9bm6//fZMmTIlf/VXf5Wk98vqj3/849xyyy25+OKLF1s3sHAru3+a6xOf+ETGjh2bKVOm5Iwzzpg3HWT//ffPz372s9x+++3Zfvvt533wuP7667PPPvss8tz0RbB6mTp1av7sz/4sU6ZMyS9/+cucd955ufbaa3PWWWfljDPOyEtf+tJcffXVufnmm3PaaaflYx9bcImB008/Pa94xSty44035oorrsiHP/zhPPHEE0m6oxufeOKJ7LPPPrnlllsyfvz4fOlLX1qgrhNOOCHnnnturrvuuqy99tqdfYv7bDW/Rx55JNdff31GjRqV2267LXvsscdir8cBBxyQ66+/PjfffHOOPvronHnmmUl602vPOeecTJ48Oddcc0022GCDnHfeeTnkkEMyefLk3HLLLRkzZsxi6weW3Irsn+a66aab8tWvfjU///nPc/311+dLX/pSbr755owfP37e56FJkyZl1qxZeeqpp3LttdfmwAMPXOR5rIl9kSlprHEOO+ywDBs2LLvsskuefvrpeZ3DLrvskvvuuy9JcsUVV+TMM8/Mk08+mUcffTSjRo3KH/3RH82r46677sptt92WV73qVUmSp59+Oltu2Vsj4LLLLsurX/3qeWUPPvjgeb+c7bzzzvn1r3+drbfeet7+a6+9NkcccUQ22GCDJOkcJ0ne+MY3JunNq53bvsF8+MMfzqc//ekMHz48X/nKV9JaW+KV8C+44IJMnDgxc+bMyfTp03PHHXdk5513zvrrr593vetdec1rXpPXvva1SXq/QB5//PF585vfPK9twNBY0f3TXNdee20uuuiiJMkrXvGKPPLII5kxY0YOPPDAXH311dl2221z0kknZeLEifnNb36T5z3vedloo40GPQd9Eayetttuu+yyyy5JklGjRuXggw9OVc3rf2bMmJHjjjsud999d6pq3qjHgS677LJcfPHF80YJzZ49O/fff39e9KIXZdq0adl+++2TJOuuu+68/8t77LFHLr/88k49jz32WGbOnJn99tsvSfKWt7ylE44v7rPVXNdcc03Gjh2btdZaK6ecckpGjRq1xNdj2rRpOeqoozJ9+vT84Q9/mDdteP/998+f//mf59hjj80b3/jGjBgxInvuuWfe8Y535KmnnsrrX/96gREMsRXZP8117bXX5g1veEM23HDDJL3fya655pqcdNJJuemmmzJz5syst9562X333TNp0qRcc80180YezW9N7ouMMGKNs9566yVJ1lprrQwbNmzeLzJrrbVW5syZk9mzZ+c973lPLrzwwtx666058cQTM3v27E4drbWMGjUqkydPzuTJk3PrrbfmsssuS7LgkMa5x0uStddeO3PmzFmgriVp78DXnnDCCRkzZkwOP/zweeU+85nPZPLkybn88sszevTobLLJJtlwww1z7733LrL+X/3qVznrrLPy05/+NFOmTMlrXvOazJ49O+uss05uuOGG/PEf/3G+973vzTunc889N5/+9KfzwAMPZMyYMXnkkUcWWT+w5FZ0/zTwNfOrqnl/Rbvmmmty0EEHZfjw4bnwwgvn/QVNXwRrjoGfV9Zaa61OfzRnzpx8/OMfz8tf/vLcdttt+cEPfrBA35Nk3hocc/uf+++/PzvttFOuueaaHHDAAfPKDezfluWz0cDXf/e73503PWPuaO0DDzwwN998c2666aZ56yONGjUqN91002Kvx/ve976cfPLJufXWW/PP//zP8873lFNOyZe//OX8/ve/zz777JNf/vKXGT9+fK6++upstdVWedvb3jZv+i4wNFZk/zSw/GCGDRuWkSNH5qtf/Wr222+/HHjggbniiityzz33ZKeddnrW9UUCI5515v4n3GKLLTJr1qxceOGFC5R5yUtekocffjjXXXddkt4UkNtvvz2ttUyZMmWp0twDDjhgXsc2a9asedNOFuWrX/1qJk+evNiFsz/60Y/mve99bx5//PEkyeOPP56JEyd2yjz++OPZcMMNs+mmm+ahhx7Kj370oyTJrFmzMmPGjBx++OH5/Oc/n8mTJydJ7rnnnuy999457bTTssUWWyx2GDgwdJZX/zR+/Ph539B25ZVXZosttsgmm2ySrbfeOr/73e9y9913Z/vtt88BBxyQs846a15gpC+CZ48ZM2Zkq622StL7prLBHHLIIfmHf/iHeb9o3XzzzUl60z0OO+ywJT7Wc5/73Gy88ca5/vrrkyTnn3/+Yl/zhje8Yd4vgov61sWTTz45X/va1/Lzn/983rZvfOMb+a//+q9OuYHn+7WvfW3e9nvuuSe77LJL/uIv/iLjxo3LL3/5y/z617/O85///Jx44ol55zvfmV/84hdLfK7Aslse/dP48ePzve99L08++WSeeOKJfPe73533+Wf8+PE566yzMn78+Bx44IE599xzM2bMmFTVs64vMiWNITfs7jNWdhMWabPNNsuJJ56YXXbZJSNHjsyee+65QJl11103F154Yf70T/80M2bMyJw5c/L+978/v//97zN27Nglnn6RJHvuuWde97rXZbfddsu2226bcePGLbC+yDN10kknZdasWdlzzz0zbNiwDBs2LB/84Ac7ZXbbbbeMHTs2o0aNyvbbb5/9998/STJz5swcccQRmT17dlpr+dznPpekN93k7rvvTmstBx98cHbbbbchaSusEl62an+1+/Lqn0499dSccMIJ2XXXXfOc5zyn84Fk7733ztNPP52k9xeyj370o4P+JW5R9EWw5N74ki1XdhMG9ZGPfCTHHXdcPvvZz85b5HV+H//4x/P+978/u+66a1prGTlyZH74wx/myiuvzGmnnbZUx/vKV76SE088MRtuuGEOOuigIfts9IIXvCDnn39+PvShD+W3v/1t1lprrYwfP36Bqa2nnnpq3vSmN2WrrbbKPvvsk1/96ldJks9//vO54oorsvbaa2fnnXfOYYcdlvPPPz+f+cxnMmzYsGy00UZGGLHG+vHHX7OymzCo5dE/7b777jn++OOz1157JUne9a53ZezYsUl6n4dOP/307Lvvvtlwww2z/vrrL3b9ovmtKX1RLW5I6Iowbty4Nv9CwKw+7rzzzuy0004ruxkrxKc//enssMMOOfroo5fqdbNmzcpGG22UJ598MuPHj8/EiROz++67L6dWrhiDve/jxo1bYFHv1cnq3n4WpH9a8+mLWNWt6f3QtGnTcuKJJ84bNbik5n42SpK//du/zfTp0/OFL3xheTRxhVgT+6Jk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\n",
      "text/plain": [
       "<Figure size 1440x864 with 5 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#然后我们再来看看各种舱级别情况下各性别的获救情况\n",
    "fig=plt.figure(figsize=(20,12)) # 设置图形尺寸\n",
    "fig.set(alpha=0.65) # 设置图像透明度，无所谓\n",
    "plt.title(u\"rescue situation of PClass and gender\") # 根据舱等级和性别的获救情况\n",
    "\n",
    "ax1=fig.add_subplot(141) #1行4列的第1个\n",
    "data_train.Survived[data_train.Sex == 'female'][data_train.Pclass != 3].value_counts().plot(kind='bar', label=\"female high-class\", color='#FA2479')\n",
    "ax1.set_xticklabels([u\"rescued\", u\"unrescued\"], rotation=0)\n",
    "ax1.legend([u\"fmale/high-PClass\"], loc='best') # 女性/高级舱\n",
    "\n",
    "ax2=fig.add_subplot(142, sharey=ax1)\n",
    "data_train.Survived[data_train.Sex == 'female'][data_train.Pclass == 3].value_counts().plot(kind='bar', label='female, low-class', color='pink')\n",
    "ax2.set_xticklabels([u\"unrescued\", u\"rescued\"], rotation=0)\n",
    "plt.legend([u\"fmale/low-PClass\"], loc='best') # 女性/低级舱\n",
    "\n",
    "ax3=fig.add_subplot(143, sharey=ax1)\n",
    "data_train.Survived[data_train.Sex == 'male'][data_train.Pclass != 3].value_counts().plot(kind='bar', label='male, high class',color='lightblue')\n",
    "ax3.set_xticklabels([u\"unrescued\", u\"rescued\"], rotation=0)\n",
    "plt.legend([u\"male/high-PClass\"], loc='best') # 男性/高级舱\n",
    "\n",
    "ax4=fig.add_subplot(144, sharey=ax1)\n",
    "data_train.Survived[data_train.Sex == 'male'][data_train.Pclass == 3].value_counts().plot(kind='bar', label='male low class', color='steelblue')\n",
    "ax4.set_xticklabels([u\"unrescued\", u\"rescued\"], rotation=0)\n",
    "plt.legend([u\"male/low-PClass\"], loc='best') # 男性/低级舱\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![](http://7xo0y8.com1.z0.glb.clouddn.com/2_titanic/11.png?imageView/2/w/700/q/100)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font color=red>那堂兄弟和父母呢？<font>\n",
    "<font color=red>大家族会有优势么？<font><br>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SibSp</th>\n",
       "      <th>Survived</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">0</th>\n",
       "      <th>0</th>\n",
       "      <td>398</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>210</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">1</th>\n",
       "      <th>0</th>\n",
       "      <td>97</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>112</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">2</th>\n",
       "      <th>0</th>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>13</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">3</th>\n",
       "      <th>0</th>\n",
       "      <td>12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">4</th>\n",
       "      <th>0</th>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <th>0</th>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <th>0</th>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                PassengerId\n",
       "SibSp Survived             \n",
       "0     0                 398\n",
       "      1                 210\n",
       "1     0                  97\n",
       "      1                 112\n",
       "2     0                  15\n",
       "      1                  13\n",
       "3     0                  12\n",
       "      1                   4\n",
       "4     0                  15\n",
       "      1                   3\n",
       "5     0                   5\n",
       "8     0                   7"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "g = data_train.groupby(['SibSp','Survived'])\n",
    "df = pd.DataFrame(g.count()['PassengerId'])\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Parch</th>\n",
       "      <th>Survived</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">0</th>\n",
       "      <th>0</th>\n",
       "      <td>445</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>233</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">1</th>\n",
       "      <th>0</th>\n",
       "      <td>53</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>65</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">2</th>\n",
       "      <th>0</th>\n",
       "      <td>40</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>40</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">3</th>\n",
       "      <th>0</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <th>0</th>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">5</th>\n",
       "      <th>0</th>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                PassengerId\n",
       "Parch Survived             \n",
       "0     0                 445\n",
       "      1                 233\n",
       "1     0                  53\n",
       "      1                  65\n",
       "2     0                  40\n",
       "      1                  40\n",
       "3     0                   2\n",
       "      1                   3\n",
       "4     0                   4\n",
       "5     0                   4\n",
       "      1                   1\n",
       "6     0                   1"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "g = data_train.groupby(['Parch','Survived'])\n",
    "df = pd.DataFrame(g.count()['PassengerId'])\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font color=red>好吧，没看出特别特别明显的规律(为自己的智商感到捉急…)，先作为备选特征，放一放。<font><br>\n",
    "<font color=red>看看船票好了<font><br>\n",
    "<font color=red>ticket是船票编号，应该是unique的，和最后的结果没有太大的关系，不纳入考虑的特征范畴<font><br>\n",
    "<font color=red>cabin只有204个乘客有值，我们先看看它的一个分布<font><br>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "B96 B98            4\n",
       "G6                 4\n",
       "C23 C25 C27        4\n",
       "E101               3\n",
       "F33                3\n",
       "D                  3\n",
       "F2                 3\n",
       "C22 C26            3\n",
       "F4                 2\n",
       "C126               2\n",
       "E33                2\n",
       "B58 B60            2\n",
       "C65                2\n",
       "C125               2\n",
       "B49                2\n",
       "B18                2\n",
       "C123               2\n",
       "B51 B53 B55        2\n",
       "C93                2\n",
       "C2                 2\n",
       "D33                2\n",
       "C68                2\n",
       "D36                2\n",
       "B5                 2\n",
       "C83                2\n",
       "B57 B59 B63 B66    2\n",
       "E8                 2\n",
       "E67                2\n",
       "C124               2\n",
       "B77                2\n",
       "                  ..\n",
       "D28                1\n",
       "C99                1\n",
       "E34                1\n",
       "B94                1\n",
       "C87                1\n",
       "C30                1\n",
       "D15                1\n",
       "A36                1\n",
       "E31                1\n",
       "C32                1\n",
       "C47                1\n",
       "C106               1\n",
       "B37                1\n",
       "B101               1\n",
       "B69                1\n",
       "C110               1\n",
       "B19                1\n",
       "C45                1\n",
       "D50                1\n",
       "C7                 1\n",
       "B80                1\n",
       "D49                1\n",
       "E49                1\n",
       "A6                 1\n",
       "C95                1\n",
       "D11                1\n",
       "D10 D12            1\n",
       "B86                1\n",
       "E12                1\n",
       "F38                1\n",
       "Name: Cabin, Length: 147, dtype: int64"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#ticket是船票编号，应该是unique的，和最后的结果没有太大的关系，不纳入考虑的特征范畴\n",
    "#cabin只有204个乘客有值，我们先看看它的一个分布\n",
    "data_train.Cabin.value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font color=red>这三三两两的…如此不集中…我们猜一下，也许，前面的ABCDE是指的甲板位置、然后编号是房间号？…好吧，我瞎说的，别当真…<font><br>\n",
    "<font color=red>关键是Cabin这鬼属性，应该算作类目型的，本来缺失值就多，还如此不集中，注定是个棘手货…第一感觉，这玩意儿如果直接按照类目特征处理的话，太散了，估计每个因子化后的特征都拿不到什么权重。加上有那么多缺失值，要不我们先把Cabin缺失与否作为条件(虽然这部分信息缺失可能并非未登记，maybe只是丢失了而已，所以这样做未必妥当)，先在有无Cabin信息这个粗粒度上看看Survived的情况好了。<font><br>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 1080x648 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#cabin的值计数太分散了，绝大多数Cabin值只出现一次。感觉上作为类目，加入特征未必会有效\n",
    "#那我们一起看看这个值的有无，对于survival的分布状况，影响如何吧\n",
    "fig = plt.figure(figsize=(15,9))\n",
    "fig.set(alpha=0.2)  # 设定图表颜色alpha参数\n",
    "\n",
    "Survived_cabin = data_train.Survived[pd.notnull(data_train.Cabin)].value_counts()\n",
    "Survived_nocabin = data_train.Survived[pd.isnull(data_train.Cabin)].value_counts()\n",
    "\n",
    "df=pd.DataFrame({u'have':Survived_cabin, u'not have':Survived_nocabin}).transpose() # 有/无\n",
    "# df.plot(kind='bar', stacked=True)\n",
    "df.plot(kind='bar')\n",
    "\n",
    "plt.title(u\"View rescue situation through Cabin\") # 按Cabin有无看获救情况\n",
    "plt.xlabel(u\"hava/not-have Cabin\") # Cabin有无\n",
    "plt.ylabel(u\"Number of people\") # 人数\n",
    "\n",
    "plt.show()\n",
    "\n",
    "#似乎有cabin记录的乘客survival比例稍高，那先试试把这个值分为两类，有cabin值/无cabin值，一会儿加到类别特征好了"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font color=red>有Cabin记录的似乎获救概率稍高一些，先这么着放一放吧。<font><br><br>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font color=red>先从最突出的数据属性开始吧，对，Cabin和Age，有丢失数据实在是对下一步工作影响太大。<font><br>\n",
    "\n",
    "<font color=red>先说Cabin，暂时我们就按照刚才说的，按Cabin有无数据，将这个属性处理成Yes和No两种类型吧。<font><br>\n",
    "\n",
    "<font color=red>再说Age：<font><br>\n",
    "\n",
    "<font color=red>通常遇到缺值的情况，我们会有几种常见的处理方式<font><br>\n",
    "\n",
    "1. <font color=red>如果缺值的样本占总数比例极高，我们可能就直接舍弃了，作为特征加入的话，可能反倒带入noise，影响最后的结果了<font><br>\n",
    "2. <font color=red>如果缺值的样本适中，而该属性非连续值特征属性(比如说类目属性)，那就把NaN作为一个新类别，加到类别特征中<font><br>\n",
    "3. <font color=red>如果缺值的样本适中，而该属性为连续值特征属性，有时候我们会考虑给定一个step(比如这里的age，我们可以考虑每隔2/3岁为一个步长)，然后把它离散化，之后把NaN作为一个type加到属性类目中。<font><br>\n",
    "4. <font color=red>有些情况下，缺失的值个数并不是特别多，那我们也可以试着根据已有的值，拟合一下数据，补充上。<font><br>\n",
    "<font color=red>本例中，后两种处理方式应该都是可行的，我们先试试拟合补全吧(虽然说没有特别多的背景可供我们拟合，这不一定是一个多么好的选择)<font><br>\n",
    "\n",
    "<font color=red>我们这里用scikit-learn中的RandomForest来拟合一下缺失的年龄数据<font><br>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\pcApp\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:10: FutureWarning: Method .as_matrix will be removed in a future version. Use .values instead.\n",
      "  # Remove the CWD from sys.path while we load stuff.\n",
      "D:\\pcApp\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:11: FutureWarning: Method .as_matrix will be removed in a future version. Use .values instead.\n",
      "  # This is added back by InteractiveShellApp.init_path()\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>male</td>\n",
       "      <td>22.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>A/5 21171</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>No</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>female</td>\n",
       "      <td>38.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>PC 17599</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>Yes</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>female</td>\n",
       "      <td>26.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>STON/O2. 3101282</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>No</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
       "      <td>female</td>\n",
       "      <td>35.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>113803</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>Yes</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Allen, Mr. William Henry</td>\n",
       "      <td>male</td>\n",
       "      <td>35.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>373450</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>No</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Moran, Mr. James</td>\n",
       "      <td>male</td>\n",
       "      <td>23.838953</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>330877</td>\n",
       "      <td>8.4583</td>\n",
       "      <td>No</td>\n",
       "      <td>Q</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>7</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>McCarthy, Mr. Timothy J</td>\n",
       "      <td>male</td>\n",
       "      <td>54.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>17463</td>\n",
       "      <td>51.8625</td>\n",
       "      <td>Yes</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Palsson, Master. Gosta Leonard</td>\n",
       "      <td>male</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>349909</td>\n",
       "      <td>21.0750</td>\n",
       "      <td>No</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg)</td>\n",
       "      <td>female</td>\n",
       "      <td>27.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>347742</td>\n",
       "      <td>11.1333</td>\n",
       "      <td>No</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>10</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>Nasser, Mrs. Nicholas (Adele Achem)</td>\n",
       "      <td>female</td>\n",
       "      <td>14.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>237736</td>\n",
       "      <td>30.0708</td>\n",
       "      <td>No</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>11</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Sandstrom, Miss. Marguerite Rut</td>\n",
       "      <td>female</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>PP 9549</td>\n",
       "      <td>16.7000</td>\n",
       "      <td>Yes</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>12</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Bonnell, Miss. Elizabeth</td>\n",
       "      <td>female</td>\n",
       "      <td>58.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>113783</td>\n",
       "      <td>26.5500</td>\n",
       "      <td>Yes</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>13</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Saundercock, Mr. William Henry</td>\n",
       "      <td>male</td>\n",
       "      <td>20.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>A/5. 2151</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>No</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>14</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Andersson, Mr. Anders Johan</td>\n",
       "      <td>male</td>\n",
       "      <td>39.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>347082</td>\n",
       "      <td>31.2750</td>\n",
       "      <td>No</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>15</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Vestrom, Miss. Hulda Amanda Adolfina</td>\n",
       "      <td>female</td>\n",
       "      <td>14.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>350406</td>\n",
       "      <td>7.8542</td>\n",
       "      <td>No</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>16</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>Hewlett, Mrs. (Mary D Kingcome)</td>\n",
       "      <td>female</td>\n",
       "      <td>55.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>248706</td>\n",
       "      <td>16.0000</td>\n",
       "      <td>No</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>17</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Rice, Master. Eugene</td>\n",
       "      <td>male</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>382652</td>\n",
       "      <td>29.1250</td>\n",
       "      <td>No</td>\n",
       "      <td>Q</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>18</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>Williams, Mr. Charles Eugene</td>\n",
       "      <td>male</td>\n",
       "      <td>32.066493</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>244373</td>\n",
       "      <td>13.0000</td>\n",
       "      <td>No</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>19</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Vander Planke, Mrs. Julius (Emelia Maria Vande...</td>\n",
       "      <td>female</td>\n",
       "      <td>31.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>345763</td>\n",
       "      <td>18.0000</td>\n",
       "      <td>No</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>20</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Masselmani, Mrs. Fatima</td>\n",
       "      <td>female</td>\n",
       "      <td>29.518205</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2649</td>\n",
       "      <td>7.2250</td>\n",
       "      <td>No</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>21</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>Fynney, Mr. Joseph J</td>\n",
       "      <td>male</td>\n",
       "      <td>35.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>239865</td>\n",
       "      <td>26.0000</td>\n",
       "      <td>No</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>22</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>Beesley, Mr. Lawrence</td>\n",
       "      <td>male</td>\n",
       "      <td>34.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>248698</td>\n",
       "      <td>13.0000</td>\n",
       "      <td>Yes</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>23</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>McGowan, Miss. Anna \"Annie\"</td>\n",
       "      <td>female</td>\n",
       "      <td>15.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>330923</td>\n",
       "      <td>8.0292</td>\n",
       "      <td>No</td>\n",
       "      <td>Q</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>24</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Sloper, Mr. William Thompson</td>\n",
       "      <td>male</td>\n",
       "      <td>28.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>113788</td>\n",
       "      <td>35.5000</td>\n",
       "      <td>Yes</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>25</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Palsson, Miss. Torborg Danira</td>\n",
       "      <td>female</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>349909</td>\n",
       "      <td>21.0750</td>\n",
       "      <td>No</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>26</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Asplund, Mrs. Carl Oscar (Selma Augusta Emilia...</td>\n",
       "      <td>female</td>\n",
       "      <td>38.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>347077</td>\n",
       "      <td>31.3875</td>\n",
       "      <td>No</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>27</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Emir, Mr. Farred Chehab</td>\n",
       "      <td>male</td>\n",
       "      <td>29.518205</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2631</td>\n",
       "      <td>7.2250</td>\n",
       "      <td>No</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>28</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>Fortune, Mr. Charles Alexander</td>\n",
       "      <td>male</td>\n",
       "      <td>19.000000</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>19950</td>\n",
       "      <td>263.0000</td>\n",
       "      <td>Yes</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>29</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>O'Dwyer, Miss. Ellen \"Nellie\"</td>\n",
       "      <td>female</td>\n",
       "      <td>22.380113</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>330959</td>\n",
       "      <td>7.8792</td>\n",
       "      <td>No</td>\n",
       "      <td>Q</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>30</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Todoroff, Mr. Lalio</td>\n",
       "      <td>male</td>\n",
       "      <td>27.947206</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>349216</td>\n",
       "      <td>7.8958</td>\n",
       "      <td>No</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>861</th>\n",
       "      <td>862</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>Giles, Mr. Frederick Edward</td>\n",
       "      <td>male</td>\n",
       "      <td>21.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>28134</td>\n",
       "      <td>11.5000</td>\n",
       "      <td>No</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>862</th>\n",
       "      <td>863</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Swift, Mrs. Frederick Joel (Margaret Welles Ba...</td>\n",
       "      <td>female</td>\n",
       "      <td>48.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>17466</td>\n",
       "      <td>25.9292</td>\n",
       "      <td>Yes</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>863</th>\n",
       "      <td>864</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Sage, Miss. Dorothy Edith \"Dolly\"</td>\n",
       "      <td>female</td>\n",
       "      <td>10.869867</td>\n",
       "      <td>8</td>\n",
       "      <td>2</td>\n",
       "      <td>CA. 2343</td>\n",
       "      <td>69.5500</td>\n",
       "      <td>No</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>864</th>\n",
       "      <td>865</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>Gill, Mr. John William</td>\n",
       "      <td>male</td>\n",
       "      <td>24.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>233866</td>\n",
       "      <td>13.0000</td>\n",
       "      <td>No</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>865</th>\n",
       "      <td>866</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>Bystrom, Mrs. (Karolina)</td>\n",
       "      <td>female</td>\n",
       "      <td>42.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>236852</td>\n",
       "      <td>13.0000</td>\n",
       "      <td>No</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>866</th>\n",
       "      <td>867</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>Duran y More, Miss. Asuncion</td>\n",
       "      <td>female</td>\n",
       "      <td>27.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>SC/PARIS 2149</td>\n",
       "      <td>13.8583</td>\n",
       "      <td>No</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>867</th>\n",
       "      <td>868</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>Roebling, Mr. Washington Augustus II</td>\n",
       "      <td>male</td>\n",
       "      <td>31.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>PC 17590</td>\n",
       "      <td>50.4958</td>\n",
       "      <td>Yes</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>868</th>\n",
       "      <td>869</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>van Melkebeke, Mr. Philemon</td>\n",
       "      <td>male</td>\n",
       "      <td>25.977889</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>345777</td>\n",
       "      <td>9.5000</td>\n",
       "      <td>No</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>869</th>\n",
       "      <td>870</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Johnson, Master. Harold Theodor</td>\n",
       "      <td>male</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>347742</td>\n",
       "      <td>11.1333</td>\n",
       "      <td>No</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>870</th>\n",
       "      <td>871</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Balkic, Mr. Cerin</td>\n",
       "      <td>male</td>\n",
       "      <td>26.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>349248</td>\n",
       "      <td>7.8958</td>\n",
       "      <td>No</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>871</th>\n",
       "      <td>872</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Beckwith, Mrs. Richard Leonard (Sallie Monypeny)</td>\n",
       "      <td>female</td>\n",
       "      <td>47.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>11751</td>\n",
       "      <td>52.5542</td>\n",
       "      <td>Yes</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>872</th>\n",
       "      <td>873</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>Carlsson, Mr. Frans Olof</td>\n",
       "      <td>male</td>\n",
       "      <td>33.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>695</td>\n",
       "      <td>5.0000</td>\n",
       "      <td>Yes</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>873</th>\n",
       "      <td>874</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Vander Cruyssen, Mr. Victor</td>\n",
       "      <td>male</td>\n",
       "      <td>47.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>345765</td>\n",
       "      <td>9.0000</td>\n",
       "      <td>No</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>874</th>\n",
       "      <td>875</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>Abelson, Mrs. Samuel (Hannah Wizosky)</td>\n",
       "      <td>female</td>\n",
       "      <td>28.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>P/PP 3381</td>\n",
       "      <td>24.0000</td>\n",
       "      <td>No</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>875</th>\n",
       "      <td>876</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Najib, Miss. Adele Kiamie \"Jane\"</td>\n",
       "      <td>female</td>\n",
       "      <td>15.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2667</td>\n",
       "      <td>7.2250</td>\n",
       "      <td>No</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>876</th>\n",
       "      <td>877</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Gustafsson, Mr. Alfred Ossian</td>\n",
       "      <td>male</td>\n",
       "      <td>20.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7534</td>\n",
       "      <td>9.8458</td>\n",
       "      <td>No</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>877</th>\n",
       "      <td>878</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Petroff, Mr. Nedelio</td>\n",
       "      <td>male</td>\n",
       "      <td>19.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>349212</td>\n",
       "      <td>7.8958</td>\n",
       "      <td>No</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>878</th>\n",
       "      <td>879</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Laleff, Mr. Kristo</td>\n",
       "      <td>male</td>\n",
       "      <td>27.947206</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>349217</td>\n",
       "      <td>7.8958</td>\n",
       "      <td>No</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>879</th>\n",
       "      <td>880</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Potter, Mrs. Thomas Jr (Lily Alexenia Wilson)</td>\n",
       "      <td>female</td>\n",
       "      <td>56.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>11767</td>\n",
       "      <td>83.1583</td>\n",
       "      <td>Yes</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>880</th>\n",
       "      <td>881</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>Shelley, Mrs. William (Imanita Parrish Hall)</td>\n",
       "      <td>female</td>\n",
       "      <td>25.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>230433</td>\n",
       "      <td>26.0000</td>\n",
       "      <td>No</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>881</th>\n",
       "      <td>882</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Markun, Mr. Johann</td>\n",
       "      <td>male</td>\n",
       "      <td>33.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>349257</td>\n",
       "      <td>7.8958</td>\n",
       "      <td>No</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>882</th>\n",
       "      <td>883</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Dahlberg, Miss. Gerda Ulrika</td>\n",
       "      <td>female</td>\n",
       "      <td>22.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7552</td>\n",
       "      <td>10.5167</td>\n",
       "      <td>No</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>883</th>\n",
       "      <td>884</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>Banfield, Mr. Frederick James</td>\n",
       "      <td>male</td>\n",
       "      <td>28.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>C.A./SOTON 34068</td>\n",
       "      <td>10.5000</td>\n",
       "      <td>No</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>884</th>\n",
       "      <td>885</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Sutehall, Mr. Henry Jr</td>\n",
       "      <td>male</td>\n",
       "      <td>25.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>SOTON/OQ 392076</td>\n",
       "      <td>7.0500</td>\n",
       "      <td>No</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>885</th>\n",
       "      <td>886</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Rice, Mrs. William (Margaret Norton)</td>\n",
       "      <td>female</td>\n",
       "      <td>39.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>382652</td>\n",
       "      <td>29.1250</td>\n",
       "      <td>No</td>\n",
       "      <td>Q</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>886</th>\n",
       "      <td>887</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>Montvila, Rev. Juozas</td>\n",
       "      <td>male</td>\n",
       "      <td>27.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>211536</td>\n",
       "      <td>13.0000</td>\n",
       "      <td>No</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>887</th>\n",
       "      <td>888</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Graham, Miss. Margaret Edith</td>\n",
       "      <td>female</td>\n",
       "      <td>19.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>112053</td>\n",
       "      <td>30.0000</td>\n",
       "      <td>Yes</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>888</th>\n",
       "      <td>889</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Johnston, Miss. Catherine Helen \"Carrie\"</td>\n",
       "      <td>female</td>\n",
       "      <td>16.193950</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>W./C. 6607</td>\n",
       "      <td>23.4500</td>\n",
       "      <td>No</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>889</th>\n",
       "      <td>890</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Behr, Mr. Karl Howell</td>\n",
       "      <td>male</td>\n",
       "      <td>26.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>111369</td>\n",
       "      <td>30.0000</td>\n",
       "      <td>Yes</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>890</th>\n",
       "      <td>891</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Dooley, Mr. Patrick</td>\n",
       "      <td>male</td>\n",
       "      <td>32.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>370376</td>\n",
       "      <td>7.7500</td>\n",
       "      <td>No</td>\n",
       "      <td>Q</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>891 rows × 12 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     PassengerId  Survived  Pclass  \\\n",
       "0              1         0       3   \n",
       "1              2         1       1   \n",
       "2              3         1       3   \n",
       "3              4         1       1   \n",
       "4              5         0       3   \n",
       "5              6         0       3   \n",
       "6              7         0       1   \n",
       "7              8         0       3   \n",
       "8              9         1       3   \n",
       "9             10         1       2   \n",
       "10            11         1       3   \n",
       "11            12         1       1   \n",
       "12            13         0       3   \n",
       "13            14         0       3   \n",
       "14            15         0       3   \n",
       "15            16         1       2   \n",
       "16            17         0       3   \n",
       "17            18         1       2   \n",
       "18            19         0       3   \n",
       "19            20         1       3   \n",
       "20            21         0       2   \n",
       "21            22         1       2   \n",
       "22            23         1       3   \n",
       "23            24         1       1   \n",
       "24            25         0       3   \n",
       "25            26         1       3   \n",
       "26            27         0       3   \n",
       "27            28         0       1   \n",
       "28            29         1       3   \n",
       "29            30         0       3   \n",
       "..           ...       ...     ...   \n",
       "861          862         0       2   \n",
       "862          863         1       1   \n",
       "863          864         0       3   \n",
       "864          865         0       2   \n",
       "865          866         1       2   \n",
       "866          867         1       2   \n",
       "867          868         0       1   \n",
       "868          869         0       3   \n",
       "869          870         1       3   \n",
       "870          871         0       3   \n",
       "871          872         1       1   \n",
       "872          873         0       1   \n",
       "873          874         0       3   \n",
       "874          875         1       2   \n",
       "875          876         1       3   \n",
       "876          877         0       3   \n",
       "877          878         0       3   \n",
       "878          879         0       3   \n",
       "879          880         1       1   \n",
       "880          881         1       2   \n",
       "881          882         0       3   \n",
       "882          883         0       3   \n",
       "883          884         0       2   \n",
       "884          885         0       3   \n",
       "885          886         0       3   \n",
       "886          887         0       2   \n",
       "887          888         1       1   \n",
       "888          889         0       3   \n",
       "889          890         1       1   \n",
       "890          891         0       3   \n",
       "\n",
       "                                                  Name     Sex        Age  \\\n",
       "0                              Braund, Mr. Owen Harris    male  22.000000   \n",
       "1    Cumings, Mrs. John Bradley (Florence Briggs Th...  female  38.000000   \n",
       "2                               Heikkinen, Miss. Laina  female  26.000000   \n",
       "3         Futrelle, Mrs. Jacques Heath (Lily May Peel)  female  35.000000   \n",
       "4                             Allen, Mr. William Henry    male  35.000000   \n",
       "5                                     Moran, Mr. James    male  23.838953   \n",
       "6                              McCarthy, Mr. Timothy J    male  54.000000   \n",
       "7                       Palsson, Master. Gosta Leonard    male   2.000000   \n",
       "8    Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg)  female  27.000000   \n",
       "9                  Nasser, Mrs. Nicholas (Adele Achem)  female  14.000000   \n",
       "10                     Sandstrom, Miss. Marguerite Rut  female   4.000000   \n",
       "11                            Bonnell, Miss. Elizabeth  female  58.000000   \n",
       "12                      Saundercock, Mr. William Henry    male  20.000000   \n",
       "13                         Andersson, Mr. Anders Johan    male  39.000000   \n",
       "14                Vestrom, Miss. Hulda Amanda Adolfina  female  14.000000   \n",
       "15                    Hewlett, Mrs. (Mary D Kingcome)   female  55.000000   \n",
       "16                                Rice, Master. Eugene    male   2.000000   \n",
       "17                        Williams, Mr. Charles Eugene    male  32.066493   \n",
       "18   Vander Planke, Mrs. Julius (Emelia Maria Vande...  female  31.000000   \n",
       "19                             Masselmani, Mrs. Fatima  female  29.518205   \n",
       "20                                Fynney, Mr. Joseph J    male  35.000000   \n",
       "21                               Beesley, Mr. Lawrence    male  34.000000   \n",
       "22                         McGowan, Miss. Anna \"Annie\"  female  15.000000   \n",
       "23                        Sloper, Mr. William Thompson    male  28.000000   \n",
       "24                       Palsson, Miss. Torborg Danira  female   8.000000   \n",
       "25   Asplund, Mrs. Carl Oscar (Selma Augusta Emilia...  female  38.000000   \n",
       "26                             Emir, Mr. Farred Chehab    male  29.518205   \n",
       "27                      Fortune, Mr. Charles Alexander    male  19.000000   \n",
       "28                       O'Dwyer, Miss. Ellen \"Nellie\"  female  22.380113   \n",
       "29                                 Todoroff, Mr. Lalio    male  27.947206   \n",
       "..                                                 ...     ...        ...   \n",
       "861                        Giles, Mr. Frederick Edward    male  21.000000   \n",
       "862  Swift, Mrs. Frederick Joel (Margaret Welles Ba...  female  48.000000   \n",
       "863                  Sage, Miss. Dorothy Edith \"Dolly\"  female  10.869867   \n",
       "864                             Gill, Mr. John William    male  24.000000   \n",
       "865                           Bystrom, Mrs. (Karolina)  female  42.000000   \n",
       "866                       Duran y More, Miss. Asuncion  female  27.000000   \n",
       "867               Roebling, Mr. Washington Augustus II    male  31.000000   \n",
       "868                        van Melkebeke, Mr. Philemon    male  25.977889   \n",
       "869                    Johnson, Master. Harold Theodor    male   4.000000   \n",
       "870                                  Balkic, Mr. Cerin    male  26.000000   \n",
       "871   Beckwith, Mrs. Richard Leonard (Sallie Monypeny)  female  47.000000   \n",
       "872                           Carlsson, Mr. Frans Olof    male  33.000000   \n",
       "873                        Vander Cruyssen, Mr. Victor    male  47.000000   \n",
       "874              Abelson, Mrs. Samuel (Hannah Wizosky)  female  28.000000   \n",
       "875                   Najib, Miss. Adele Kiamie \"Jane\"  female  15.000000   \n",
       "876                      Gustafsson, Mr. Alfred Ossian    male  20.000000   \n",
       "877                               Petroff, Mr. Nedelio    male  19.000000   \n",
       "878                                 Laleff, Mr. Kristo    male  27.947206   \n",
       "879      Potter, Mrs. Thomas Jr (Lily Alexenia Wilson)  female  56.000000   \n",
       "880       Shelley, Mrs. William (Imanita Parrish Hall)  female  25.000000   \n",
       "881                                 Markun, Mr. Johann    male  33.000000   \n",
       "882                       Dahlberg, Miss. Gerda Ulrika  female  22.000000   \n",
       "883                      Banfield, Mr. Frederick James    male  28.000000   \n",
       "884                             Sutehall, Mr. Henry Jr    male  25.000000   \n",
       "885               Rice, Mrs. William (Margaret Norton)  female  39.000000   \n",
       "886                              Montvila, Rev. Juozas    male  27.000000   \n",
       "887                       Graham, Miss. Margaret Edith  female  19.000000   \n",
       "888           Johnston, Miss. Catherine Helen \"Carrie\"  female  16.193950   \n",
       "889                              Behr, Mr. Karl Howell    male  26.000000   \n",
       "890                                Dooley, Mr. Patrick    male  32.000000   \n",
       "\n",
       "     SibSp  Parch            Ticket      Fare Cabin Embarked  \n",
       "0        1      0         A/5 21171    7.2500    No        S  \n",
       "1        1      0          PC 17599   71.2833   Yes        C  \n",
       "2        0      0  STON/O2. 3101282    7.9250    No        S  \n",
       "3        1      0            113803   53.1000   Yes        S  \n",
       "4        0      0            373450    8.0500    No        S  \n",
       "5        0      0            330877    8.4583    No        Q  \n",
       "6        0      0             17463   51.8625   Yes        S  \n",
       "7        3      1            349909   21.0750    No        S  \n",
       "8        0      2            347742   11.1333    No        S  \n",
       "9        1      0            237736   30.0708    No        C  \n",
       "10       1      1           PP 9549   16.7000   Yes        S  \n",
       "11       0      0            113783   26.5500   Yes        S  \n",
       "12       0      0         A/5. 2151    8.0500    No        S  \n",
       "13       1      5            347082   31.2750    No        S  \n",
       "14       0      0            350406    7.8542    No        S  \n",
       "15       0      0            248706   16.0000    No        S  \n",
       "16       4      1            382652   29.1250    No        Q  \n",
       "17       0      0            244373   13.0000    No        S  \n",
       "18       1      0            345763   18.0000    No        S  \n",
       "19       0      0              2649    7.2250    No        C  \n",
       "20       0      0            239865   26.0000    No        S  \n",
       "21       0      0            248698   13.0000   Yes        S  \n",
       "22       0      0            330923    8.0292    No        Q  \n",
       "23       0      0            113788   35.5000   Yes        S  \n",
       "24       3      1            349909   21.0750    No        S  \n",
       "25       1      5            347077   31.3875    No        S  \n",
       "26       0      0              2631    7.2250    No        C  \n",
       "27       3      2             19950  263.0000   Yes        S  \n",
       "28       0      0            330959    7.8792    No        Q  \n",
       "29       0      0            349216    7.8958    No        S  \n",
       "..     ...    ...               ...       ...   ...      ...  \n",
       "861      1      0             28134   11.5000    No        S  \n",
       "862      0      0             17466   25.9292   Yes        S  \n",
       "863      8      2          CA. 2343   69.5500    No        S  \n",
       "864      0      0            233866   13.0000    No        S  \n",
       "865      0      0            236852   13.0000    No        S  \n",
       "866      1      0     SC/PARIS 2149   13.8583    No        C  \n",
       "867      0      0          PC 17590   50.4958   Yes        S  \n",
       "868      0      0            345777    9.5000    No        S  \n",
       "869      1      1            347742   11.1333    No        S  \n",
       "870      0      0            349248    7.8958    No        S  \n",
       "871      1      1             11751   52.5542   Yes        S  \n",
       "872      0      0               695    5.0000   Yes        S  \n",
       "873      0      0            345765    9.0000    No        S  \n",
       "874      1      0         P/PP 3381   24.0000    No        C  \n",
       "875      0      0              2667    7.2250    No        C  \n",
       "876      0      0              7534    9.8458    No        S  \n",
       "877      0      0            349212    7.8958    No        S  \n",
       "878      0      0            349217    7.8958    No        S  \n",
       "879      0      1             11767   83.1583   Yes        C  \n",
       "880      0      1            230433   26.0000    No        S  \n",
       "881      0      0            349257    7.8958    No        S  \n",
       "882      0      0              7552   10.5167    No        S  \n",
       "883      0      0  C.A./SOTON 34068   10.5000    No        S  \n",
       "884      0      0   SOTON/OQ 392076    7.0500    No        S  \n",
       "885      0      5            382652   29.1250    No        Q  \n",
       "886      0      0            211536   13.0000    No        S  \n",
       "887      0      0            112053   30.0000   Yes        S  \n",
       "888      1      2        W./C. 6607   23.4500    No        S  \n",
       "889      0      0            111369   30.0000   Yes        C  \n",
       "890      0      0            370376    7.7500    No        Q  \n",
       "\n",
       "[891 rows x 12 columns]"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.ensemble import RandomForestRegressor\n",
    " \n",
    "### 使用 RandomForestClassifier 填补缺失的年龄属性\n",
    "def set_missing_ages(df):\n",
    "    \n",
    "    # 把已有的数值型特征取出来丢进Random Forest Regressor中\n",
    "    age_df = df[['Age','Fare', 'Parch', 'SibSp', 'Pclass']]\n",
    "\n",
    "    # 乘客分成已知年龄和未知年龄两部分\n",
    "    known_age = age_df[age_df.Age.notnull()].as_matrix()\n",
    "    unknown_age = age_df[age_df.Age.isnull()].as_matrix()\n",
    "\n",
    "    # y即目标年龄\n",
    "    y = known_age[:, 0]\n",
    "\n",
    "    # X即特征属性值\n",
    "    X = known_age[:, 1:]\n",
    "\n",
    "    # fit到RandomForestRegressor之中\n",
    "    rfr = RandomForestRegressor(random_state=0, n_estimators=2000, n_jobs=-1)\n",
    "    rfr.fit(X, y)\n",
    "    \n",
    "    # 用得到的模型进行未知年龄结果预测\n",
    "    predictedAges = rfr.predict(unknown_age[:, 1::])\n",
    "    \n",
    "    # 用得到的预测结果填补原缺失数据\n",
    "    df.loc[ (df.Age.isnull()), 'Age' ] = predictedAges\n",
    "    \n",
    "    return df, rfr\n",
    "\n",
    "def set_Cabin_type(df):\n",
    "    df.loc[ (df.Cabin.notnull()), 'Cabin' ] = \"Yes\"\n",
    "    df.loc[ (df.Cabin.isnull()), 'Cabin' ] = \"No\"\n",
    "    return df\n",
    "\n",
    "data_train, rfr = set_missing_ages(data_train)\n",
    "data_train = set_Cabin_type(data_train)\n",
    "data_train"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font color=red>因为逻辑回归建模时，需要输入的特征都是数值型特征，我们通常会先对类目型的特征因子化/one-hot编码。 <font><br>\n",
    "<font color=red>什么叫做因子化/one-hot编码？举个例子：<font><br>\n",
    "\n",
    "<font color=red>以Embarked为例，原本一个属性维度，因为其取值可以是[‘S’,’C’,’Q‘]，而将其平展开为’Embarked_C’,’Embarked_S’, ‘Embarked_Q’三个属性<font><br>\n",
    "\n",
    "* <font color=red>原本Embarked取值为S的，在此处的”Embarked_S”下取值为1，在’Embarked_C’, ‘Embarked_Q’下取值为0<font><br>\n",
    "* <font color=red>原本Embarked取值为C的，在此处的”Embarked_C”下取值为1，在’Embarked_S’, ‘Embarked_Q’下取值为0<font><br>\n",
    "* <font color=red>原本Embarked取值为Q的，在此处的”Embarked_Q”下取值为1，在’Embarked_C’, ‘Embarked_S’下取值为0<font><br>\n",
    "\n",
    "<font color=red>我们使用pandas的”get_dummies”来完成这个工作，并拼接在原来的”data_train”之上，如下所示。<font><br>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin_No</th>\n",
       "      <th>Cabin_Yes</th>\n",
       "      <th>Embarked_C</th>\n",
       "      <th>Embarked_Q</th>\n",
       "      <th>Embarked_S</th>\n",
       "      <th>Sex_female</th>\n",
       "      <th>Sex_male</th>\n",
       "      <th>Pclass_1</th>\n",
       "      <th>Pclass_2</th>\n",
       "      <th>Pclass_3</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>22.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>38.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>26.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>35.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>35.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>23.838953</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>8.4583</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>7</td>\n",
       "      <td>0</td>\n",
       "      <td>54.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>51.8625</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>21.0750</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "      <td>27.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>11.1333</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>10</td>\n",
       "      <td>1</td>\n",
       "      <td>14.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>30.0708</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>11</td>\n",
       "      <td>1</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>16.7000</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>12</td>\n",
       "      <td>1</td>\n",
       "      <td>58.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>26.5500</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>13</td>\n",
       "      <td>0</td>\n",
       "      <td>20.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>14</td>\n",
       "      <td>0</td>\n",
       "      <td>39.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>31.2750</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>15</td>\n",
       "      <td>0</td>\n",
       "      <td>14.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.8542</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>16</td>\n",
       "      <td>1</td>\n",
       "      <td>55.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>16.0000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>17</td>\n",
       "      <td>0</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>29.1250</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>18</td>\n",
       "      <td>1</td>\n",
       "      <td>32.066493</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>13.0000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>19</td>\n",
       "      <td>0</td>\n",
       "      <td>31.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>18.0000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>20</td>\n",
       "      <td>1</td>\n",
       "      <td>29.518205</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.2250</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>21</td>\n",
       "      <td>0</td>\n",
       "      <td>35.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>26.0000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>22</td>\n",
       "      <td>1</td>\n",
       "      <td>34.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>13.0000</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>23</td>\n",
       "      <td>1</td>\n",
       "      <td>15.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>8.0292</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>24</td>\n",
       "      <td>1</td>\n",
       "      <td>28.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>35.5000</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>25</td>\n",
       "      <td>0</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>21.0750</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>26</td>\n",
       "      <td>1</td>\n",
       "      <td>38.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>31.3875</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>27</td>\n",
       "      <td>0</td>\n",
       "      <td>29.518205</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.2250</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>28</td>\n",
       "      <td>0</td>\n",
       "      <td>19.000000</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>263.0000</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>29</td>\n",
       "      <td>1</td>\n",
       "      <td>22.380113</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.8792</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>30</td>\n",
       "      <td>0</td>\n",
       "      <td>27.947206</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.8958</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>861</th>\n",
       "      <td>862</td>\n",
       "      <td>0</td>\n",
       "      <td>21.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>11.5000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>862</th>\n",
       "      <td>863</td>\n",
       "      <td>1</td>\n",
       "      <td>48.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>25.9292</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>863</th>\n",
       "      <td>864</td>\n",
       "      <td>0</td>\n",
       "      <td>10.869867</td>\n",
       "      <td>8</td>\n",
       "      <td>2</td>\n",
       "      <td>69.5500</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>864</th>\n",
       "      <td>865</td>\n",
       "      <td>0</td>\n",
       "      <td>24.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>13.0000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>865</th>\n",
       "      <td>866</td>\n",
       "      <td>1</td>\n",
       "      <td>42.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>13.0000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>866</th>\n",
       "      <td>867</td>\n",
       "      <td>1</td>\n",
       "      <td>27.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>13.8583</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>867</th>\n",
       "      <td>868</td>\n",
       "      <td>0</td>\n",
       "      <td>31.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>50.4958</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>868</th>\n",
       "      <td>869</td>\n",
       "      <td>0</td>\n",
       "      <td>25.977889</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>9.5000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>869</th>\n",
       "      <td>870</td>\n",
       "      <td>1</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>11.1333</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>870</th>\n",
       "      <td>871</td>\n",
       "      <td>0</td>\n",
       "      <td>26.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.8958</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>871</th>\n",
       "      <td>872</td>\n",
       "      <td>1</td>\n",
       "      <td>47.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>52.5542</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>872</th>\n",
       "      <td>873</td>\n",
       "      <td>0</td>\n",
       "      <td>33.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>5.0000</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>873</th>\n",
       "      <td>874</td>\n",
       "      <td>0</td>\n",
       "      <td>47.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>9.0000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>874</th>\n",
       "      <td>875</td>\n",
       "      <td>1</td>\n",
       "      <td>28.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>24.0000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>875</th>\n",
       "      <td>876</td>\n",
       "      <td>1</td>\n",
       "      <td>15.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.2250</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>876</th>\n",
       "      <td>877</td>\n",
       "      <td>0</td>\n",
       "      <td>20.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>9.8458</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>877</th>\n",
       "      <td>878</td>\n",
       "      <td>0</td>\n",
       "      <td>19.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.8958</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>878</th>\n",
       "      <td>879</td>\n",
       "      <td>0</td>\n",
       "      <td>27.947206</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.8958</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>879</th>\n",
       "      <td>880</td>\n",
       "      <td>1</td>\n",
       "      <td>56.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>83.1583</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>880</th>\n",
       "      <td>881</td>\n",
       "      <td>1</td>\n",
       "      <td>25.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>26.0000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>881</th>\n",
       "      <td>882</td>\n",
       "      <td>0</td>\n",
       "      <td>33.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.8958</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>882</th>\n",
       "      <td>883</td>\n",
       "      <td>0</td>\n",
       "      <td>22.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>10.5167</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>883</th>\n",
       "      <td>884</td>\n",
       "      <td>0</td>\n",
       "      <td>28.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>10.5000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>884</th>\n",
       "      <td>885</td>\n",
       "      <td>0</td>\n",
       "      <td>25.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.0500</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>885</th>\n",
       "      <td>886</td>\n",
       "      <td>0</td>\n",
       "      <td>39.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>29.1250</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>886</th>\n",
       "      <td>887</td>\n",
       "      <td>0</td>\n",
       "      <td>27.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>13.0000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>887</th>\n",
       "      <td>888</td>\n",
       "      <td>1</td>\n",
       "      <td>19.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>30.0000</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>888</th>\n",
       "      <td>889</td>\n",
       "      <td>0</td>\n",
       "      <td>16.193950</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>23.4500</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>889</th>\n",
       "      <td>890</td>\n",
       "      <td>1</td>\n",
       "      <td>26.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>30.0000</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>890</th>\n",
       "      <td>891</td>\n",
       "      <td>0</td>\n",
       "      <td>32.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.7500</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>891 rows × 16 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     PassengerId  Survived        Age  SibSp  Parch      Fare  Cabin_No  \\\n",
       "0              1         0  22.000000      1      0    7.2500         1   \n",
       "1              2         1  38.000000      1      0   71.2833         0   \n",
       "2              3         1  26.000000      0      0    7.9250         1   \n",
       "3              4         1  35.000000      1      0   53.1000         0   \n",
       "4              5         0  35.000000      0      0    8.0500         1   \n",
       "5              6         0  23.838953      0      0    8.4583         1   \n",
       "6              7         0  54.000000      0      0   51.8625         0   \n",
       "7              8         0   2.000000      3      1   21.0750         1   \n",
       "8              9         1  27.000000      0      2   11.1333         1   \n",
       "9             10         1  14.000000      1      0   30.0708         1   \n",
       "10            11         1   4.000000      1      1   16.7000         0   \n",
       "11            12         1  58.000000      0      0   26.5500         0   \n",
       "12            13         0  20.000000      0      0    8.0500         1   \n",
       "13            14         0  39.000000      1      5   31.2750         1   \n",
       "14            15         0  14.000000      0      0    7.8542         1   \n",
       "15            16         1  55.000000      0      0   16.0000         1   \n",
       "16            17         0   2.000000      4      1   29.1250         1   \n",
       "17            18         1  32.066493      0      0   13.0000         1   \n",
       "18            19         0  31.000000      1      0   18.0000         1   \n",
       "19            20         1  29.518205      0      0    7.2250         1   \n",
       "20            21         0  35.000000      0      0   26.0000         1   \n",
       "21            22         1  34.000000      0      0   13.0000         0   \n",
       "22            23         1  15.000000      0      0    8.0292         1   \n",
       "23            24         1  28.000000      0      0   35.5000         0   \n",
       "24            25         0   8.000000      3      1   21.0750         1   \n",
       "25            26         1  38.000000      1      5   31.3875         1   \n",
       "26            27         0  29.518205      0      0    7.2250         1   \n",
       "27            28         0  19.000000      3      2  263.0000         0   \n",
       "28            29         1  22.380113      0      0    7.8792         1   \n",
       "29            30         0  27.947206      0      0    7.8958         1   \n",
       "..           ...       ...        ...    ...    ...       ...       ...   \n",
       "861          862         0  21.000000      1      0   11.5000         1   \n",
       "862          863         1  48.000000      0      0   25.9292         0   \n",
       "863          864         0  10.869867      8      2   69.5500         1   \n",
       "864          865         0  24.000000      0      0   13.0000         1   \n",
       "865          866         1  42.000000      0      0   13.0000         1   \n",
       "866          867         1  27.000000      1      0   13.8583         1   \n",
       "867          868         0  31.000000      0      0   50.4958         0   \n",
       "868          869         0  25.977889      0      0    9.5000         1   \n",
       "869          870         1   4.000000      1      1   11.1333         1   \n",
       "870          871         0  26.000000      0      0    7.8958         1   \n",
       "871          872         1  47.000000      1      1   52.5542         0   \n",
       "872          873         0  33.000000      0      0    5.0000         0   \n",
       "873          874         0  47.000000      0      0    9.0000         1   \n",
       "874          875         1  28.000000      1      0   24.0000         1   \n",
       "875          876         1  15.000000      0      0    7.2250         1   \n",
       "876          877         0  20.000000      0      0    9.8458         1   \n",
       "877          878         0  19.000000      0      0    7.8958         1   \n",
       "878          879         0  27.947206      0      0    7.8958         1   \n",
       "879          880         1  56.000000      0      1   83.1583         0   \n",
       "880          881         1  25.000000      0      1   26.0000         1   \n",
       "881          882         0  33.000000      0      0    7.8958         1   \n",
       "882          883         0  22.000000      0      0   10.5167         1   \n",
       "883          884         0  28.000000      0      0   10.5000         1   \n",
       "884          885         0  25.000000      0      0    7.0500         1   \n",
       "885          886         0  39.000000      0      5   29.1250         1   \n",
       "886          887         0  27.000000      0      0   13.0000         1   \n",
       "887          888         1  19.000000      0      0   30.0000         0   \n",
       "888          889         0  16.193950      1      2   23.4500         1   \n",
       "889          890         1  26.000000      0      0   30.0000         0   \n",
       "890          891         0  32.000000      0      0    7.7500         1   \n",
       "\n",
       "     Cabin_Yes  Embarked_C  Embarked_Q  Embarked_S  Sex_female  Sex_male  \\\n",
       "0            0           0           0           1           0         1   \n",
       "1            1           1           0           0           1         0   \n",
       "2            0           0           0           1           1         0   \n",
       "3            1           0           0           1           1         0   \n",
       "4            0           0           0           1           0         1   \n",
       "5            0           0           1           0           0         1   \n",
       "6            1           0           0           1           0         1   \n",
       "7            0           0           0           1           0         1   \n",
       "8            0           0           0           1           1         0   \n",
       "9            0           1           0           0           1         0   \n",
       "10           1           0           0           1           1         0   \n",
       "11           1           0           0           1           1         0   \n",
       "12           0           0           0           1           0         1   \n",
       "13           0           0           0           1           0         1   \n",
       "14           0           0           0           1           1         0   \n",
       "15           0           0           0           1           1         0   \n",
       "16           0           0           1           0           0         1   \n",
       "17           0           0           0           1           0         1   \n",
       "18           0           0           0           1           1         0   \n",
       "19           0           1           0           0           1         0   \n",
       "20           0           0           0           1           0         1   \n",
       "21           1           0           0           1           0         1   \n",
       "22           0           0           1           0           1         0   \n",
       "23           1           0           0           1           0         1   \n",
       "24           0           0           0           1           1         0   \n",
       "25           0           0           0           1           1         0   \n",
       "26           0           1           0           0           0         1   \n",
       "27           1           0           0           1           0         1   \n",
       "28           0           0           1           0           1         0   \n",
       "29           0           0           0           1           0         1   \n",
       "..         ...         ...         ...         ...         ...       ...   \n",
       "861          0           0           0           1           0         1   \n",
       "862          1           0           0           1           1         0   \n",
       "863          0           0           0           1           1         0   \n",
       "864          0           0           0           1           0         1   \n",
       "865          0           0           0           1           1         0   \n",
       "866          0           1           0           0           1         0   \n",
       "867          1           0           0           1           0         1   \n",
       "868          0           0           0           1           0         1   \n",
       "869          0           0           0           1           0         1   \n",
       "870          0           0           0           1           0         1   \n",
       "871          1           0           0           1           1         0   \n",
       "872          1           0           0           1           0         1   \n",
       "873          0           0           0           1           0         1   \n",
       "874          0           1           0           0           1         0   \n",
       "875          0           1           0           0           1         0   \n",
       "876          0           0           0           1           0         1   \n",
       "877          0           0           0           1           0         1   \n",
       "878          0           0           0           1           0         1   \n",
       "879          1           1           0           0           1         0   \n",
       "880          0           0           0           1           1         0   \n",
       "881          0           0           0           1           0         1   \n",
       "882          0           0           0           1           1         0   \n",
       "883          0           0           0           1           0         1   \n",
       "884          0           0           0           1           0         1   \n",
       "885          0           0           1           0           1         0   \n",
       "886          0           0           0           1           0         1   \n",
       "887          1           0           0           1           1         0   \n",
       "888          0           0           0           1           1         0   \n",
       "889          1           1           0           0           0         1   \n",
       "890          0           0           1           0           0         1   \n",
       "\n",
       "     Pclass_1  Pclass_2  Pclass_3  \n",
       "0           0         0         1  \n",
       "1           1         0         0  \n",
       "2           0         0         1  \n",
       "3           1         0         0  \n",
       "4           0         0         1  \n",
       "5           0         0         1  \n",
       "6           1         0         0  \n",
       "7           0         0         1  \n",
       "8           0         0         1  \n",
       "9           0         1         0  \n",
       "10          0         0         1  \n",
       "11          1         0         0  \n",
       "12          0         0         1  \n",
       "13          0         0         1  \n",
       "14          0         0         1  \n",
       "15          0         1         0  \n",
       "16          0         0         1  \n",
       "17          0         1         0  \n",
       "18          0         0         1  \n",
       "19          0         0         1  \n",
       "20          0         1         0  \n",
       "21          0         1         0  \n",
       "22          0         0         1  \n",
       "23          1         0         0  \n",
       "24          0         0         1  \n",
       "25          0         0         1  \n",
       "26          0         0         1  \n",
       "27          1         0         0  \n",
       "28          0         0         1  \n",
       "29          0         0         1  \n",
       "..        ...       ...       ...  \n",
       "861         0         1         0  \n",
       "862         1         0         0  \n",
       "863         0         0         1  \n",
       "864         0         1         0  \n",
       "865         0         1         0  \n",
       "866         0         1         0  \n",
       "867         1         0         0  \n",
       "868         0         0         1  \n",
       "869         0         0         1  \n",
       "870         0         0         1  \n",
       "871         1         0         0  \n",
       "872         1         0         0  \n",
       "873         0         0         1  \n",
       "874         0         1         0  \n",
       "875         0         0         1  \n",
       "876         0         0         1  \n",
       "877         0         0         1  \n",
       "878         0         0         1  \n",
       "879         1         0         0  \n",
       "880         0         1         0  \n",
       "881         0         0         1  \n",
       "882         0         0         1  \n",
       "883         0         1         0  \n",
       "884         0         0         1  \n",
       "885         0         0         1  \n",
       "886         0         1         0  \n",
       "887         1         0         0  \n",
       "888         0         0         1  \n",
       "889         1         0         0  \n",
       "890         0         0         1  \n",
       "\n",
       "[891 rows x 16 columns]"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 因为逻辑回归建模时，需要输入的特征都是数值型特征\n",
    "# 我们先对类目型的特征离散/因子化\n",
    "# 以Cabin为例，原本一个属性维度，因为其取值可以是['yes','no']，而将其平展开为'Cabin_yes','Cabin_no'两个属性\n",
    "# 原本Cabin取值为yes的，在此处的'Cabin_yes'下取值为1，在'Cabin_no'下取值为0\n",
    "# 原本Cabin取值为no的，在此处的'Cabin_yes'下取值为0，在'Cabin_no'下取值为1\n",
    "# 我们使用pandas的get_dummies来完成这个工作，并拼接在原来的data_train之上，如下所示\n",
    "dummies_Cabin = pd.get_dummies(data_train['Cabin'], prefix= 'Cabin')\n",
    "\n",
    "dummies_Embarked = pd.get_dummies(data_train['Embarked'], prefix= 'Embarked')\n",
    "\n",
    "dummies_Sex = pd.get_dummies(data_train['Sex'], prefix= 'Sex')\n",
    "\n",
    "dummies_Pclass = pd.get_dummies(data_train['Pclass'], prefix= 'Pclass')\n",
    "\n",
    "df = pd.concat([data_train, dummies_Cabin, dummies_Embarked, dummies_Sex, dummies_Pclass], axis=1)\n",
    "df.drop(['Pclass', 'Name', 'Sex', 'Ticket', 'Cabin', 'Embarked'], axis=1, inplace=True)\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font color=red>我们还得做一些处理，仔细看看Age和Fare两个属性，乘客的数值幅度变化，也忒大了吧！！如果大家了解逻辑回归与梯度下降的话，会知道，各属性值之间scale差距太大，将对收敛速度造成几万点伤害值！甚至不收敛！ (╬▔皿▔)…所以我们先用scikit-learn里面的preprocessing模块对这俩货做一个scaling，所谓scaling，其实就是将一些变化幅度较大的特征化到[-1,1]之内。<font>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "ename": "ValueError",
     "evalue": "Expected 2D array, got 1D array instead:\narray=[22.         38.         26.         35.         35.         23.83895259\n 54.          2.         27.         14.          4.         58.\n 20.         39.         14.         55.          2.         32.06649305\n 31.         29.51820514 35.         34.         15.         28.\n  8.         38.         29.51820514 19.         22.38011324 27.94720616\n 40.         36.10804822 35.2958243  66.         28.         42.\n 22.87630686 21.         18.         14.         40.         27.\n 27.94720616  3.         19.         30.70572678 33.12898535 35.2958243\n 23.45968333 18.          7.         21.         49.         29.\n 65.         44.06483036 21.         28.5         5.         11.\n 22.         38.         45.          4.         41.20008848 17.09991595\n 29.         19.         17.         26.         32.         16.\n 21.         26.         32.         25.         27.94720616 30.70572678\n  0.83       30.         22.         29.         23.32262739 28.\n 17.         33.         16.         30.70572678 23.         24.\n 29.         20.         46.         26.         59.         30.70572678\n 71.         23.         34.         34.         28.         27.94720616\n 21.         33.         37.         28.         21.         27.51545426\n 38.         33.55117591 47.         14.5        22.         20.\n 17.         21.         70.5        29.         24.          2.\n 21.         30.70572678 32.5        32.5        54.         12.\n 35.2958243  24.         25.78337698 45.         33.         20.\n 47.         29.         25.         23.         19.         37.\n 16.         24.         25.34409583 22.         24.         19.\n 18.         19.         27.          9.         36.5        42.\n 51.         22.         55.5        40.5        29.78279613 51.\n 16.         30.         25.52340334 10.86986696 44.         40.\n 26.         17.          1.          9.         26.03188214 45.\n 49.5542756  28.         61.          4.          1.         21.\n 56.         18.          7.30954704 50.         30.         36.\n 10.86986696 31.71894048  9.          1.          4.         46.24976824\n 33.12898535 45.         40.         36.         32.         19.\n 19.          3.         44.         58.         35.2958243  42.\n 35.2958243  24.         28.         10.86986696 34.         45.5\n 18.          2.         32.         26.         16.         40.\n 24.         35.         22.         30.         31.09342985 31.\n 27.         42.         32.         30.         16.         27.\n 51.         27.94720616 38.         22.         19.         20.5\n 18.          7.30954704 35.         29.         59.          5.\n 24.         31.10838452 44.          8.         19.         33.\n 20.80015413 33.12898535 29.         22.         30.         44.\n 25.         24.         37.         54.         29.78279613 29.\n 62.         30.         41.         29.         34.62028571 30.\n 35.         50.         35.2958243   3.         52.         40.\n 35.2958243  36.         16.         25.         58.         35.\n 36.87489821 25.         41.         37.         35.2958243  63.\n 45.         35.05181757  7.         35.         65.         28.\n 16.         19.         57.74249226 33.         30.         22.\n 42.         22.         26.         19.         36.         24.\n 24.         41.20008848 23.5         2.         41.57487718 50.\n 35.2958243  23.31368333 19.         42.57451554 30.70572678  0.92\n 28.57888393 17.         30.         30.         24.         18.\n 26.         28.         43.         26.         24.         54.\n 31.         40.         22.         27.         30.         22.\n 10.86986696 36.         61.         36.         31.         16.\n 23.31368333 45.5        38.         16.         31.42587794 27.94720616\n 29.         41.         45.         45.          2.         24.\n 28.         25.         36.         24.         40.         26.68916849\n  3.         42.         23.         59.96916448 15.         25.\n 29.51820514 28.         22.         38.         22.38011324 22.38011324\n 40.         29.         45.         35.         33.12898535 30.\n 60.         22.87630686 35.2958243  24.         25.         18.\n 19.         22.          3.         31.94479345 22.         27.\n 20.         19.         42.          1.         32.         35.\n 27.94720616 18.          1.         36.         19.89558113 17.\n 36.         21.         28.         23.         24.         22.\n 31.         46.         23.         28.         39.         26.\n 21.         28.         20.         34.         51.          3.\n 21.          7.30954704 27.94720616 20.68131488 33.         35.05181757\n 44.         30.70572678 34.         18.         30.         10.\n 27.94720616 21.         29.         28.         18.         29.78279613\n 28.         19.         35.2958243  32.         28.         26.68916849\n 42.         17.         50.         14.         21.         24.\n 64.         31.         45.         20.         25.         28.\n 23.47643239  4.         13.         34.          5.         52.\n 36.         24.10899881 30.         49.         30.70572678 29.\n 65.         44.06001827 50.         35.2958243  48.         34.\n 47.         48.         30.70572678 38.         35.05181757 56.\n 19.89558113  0.75       29.78279613 38.         33.         23.\n 22.         44.65953056 34.         29.         22.          2.\n  9.         35.05181757 50.         63.         25.          7.30954704\n 35.         58.         30.          9.         24.10899881 21.\n 55.         71.         21.         18.19479484 54.         25.7554753\n 25.         24.         17.         21.         26.82073281 37.\n 16.         18.         33.         49.8994093  28.         26.\n 29.         30.70572678 36.         54.         24.         47.\n 34.         34.17374861 36.         32.         30.         22.\n 29.51820514 44.         22.87630686 40.5        50.         38.5155\n 39.         23.          2.         22.87630686 17.          8.01370298\n 30.          7.         45.         30.         24.33021696 22.\n 36.          9.         11.         32.         50.         64.\n 19.         32.79502428 33.          8.         17.         27.\n 26.3814249  22.         22.         62.         48.         38.5155\n 39.         36.         35.2958243  40.         28.         30.70572678\n 30.70572678 24.         19.         29.         22.87630686 32.\n 62.         53.         36.         35.2958243  16.         19.\n 34.         39.         20.07016773 32.         25.         39.\n 54.         36.         29.04293865 18.         47.         60.\n 22.         30.70572678 35.         52.         47.         27.45639428\n 37.         36.         24.40235514 49.         29.51820514 49.\n 24.         27.94720616 37.51615833 44.         35.         36.\n 30.         27.         22.         40.         39.         27.86873699\n 33.12898535 35.2958243  35.         24.         34.         26.\n  4.         26.         27.         42.         20.         21.\n 21.         61.         57.         21.         26.         19.89558113\n 80.         51.         32.         38.83477484  9.         28.\n 32.         31.         41.         26.68916849 20.         24.\n  2.         29.56889809  0.75       48.         19.         56.\n 31.10838452 23.         27.94720616 18.         21.         26.3814249\n 18.         24.         27.94720616 32.         23.         58.\n 50.         40.         47.         36.         20.         32.\n 25.         27.51545426 43.         39.08817814 40.         31.\n 70.         31.         35.05181757 18.         24.5        18.\n 43.         36.         23.47643239 27.         20.         14.\n 60.         25.         14.         19.         18.         15.\n 31.          4.         29.56889809 25.         60.         52.\n 44.         19.89558113 49.         42.         18.         35.\n 18.         25.         26.         39.         45.         42.\n 22.         17.09991595 24.         49.8994093  48.         29.\n 52.         19.         38.         27.         27.30887391 33.\n  6.         17.         34.         50.         27.         20.\n 30.         19.89558113 25.         25.         29.         11.\n 35.05181757 23.         23.         28.5        48.         35.\n 27.94720616 27.94720616 38.42663175 36.         21.         24.\n 31.         70.         16.         30.         19.         31.\n  4.          6.         33.         23.         48.          0.67\n 28.         18.         34.         33.         24.33021696 41.\n 20.         36.         16.         51.         39.17490238 30.5\n 33.55117591 32.         24.         48.         57.         29.51820514\n 54.         18.         35.2958243   5.         19.89558113 43.\n 13.         17.         29.         16.1939502  25.         25.\n 18.          8.          1.         46.         35.2958243  16.\n 10.86986696 50.38328427 25.         39.         49.         31.\n 30.         30.         34.         31.         11.          0.42\n 27.         31.         39.         18.         39.         33.\n 26.         39.         35.          6.         30.5        38.83477484\n 23.         31.         43.         10.         52.         27.\n 38.         27.          2.         35.09787898 29.56889809  1.\n 35.2958243  62.         15.          0.83       22.87630686 23.\n 18.         39.         21.         30.70572678 32.         50.91095013\n 20.         16.         30.         34.5        17.         42.\n 10.86986696 35.         28.         43.96476448  4.         74.\n  9.         16.         44.         18.         45.         51.\n 24.         22.87630686 41.         21.         48.         10.86986696\n 24.         42.         27.         31.         25.97788916  4.\n 26.         47.         33.         47.         28.         15.\n 20.         19.         27.94720616 56.         25.         33.\n 22.         28.         25.         39.         27.         19.\n 16.1939502  26.         32.        ].\nReshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mValueError\u001b[0m                                Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-19-4cba30aa86d3>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[0;32m      4\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      5\u001b[0m \u001b[0mscaler\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mpreprocessing\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mStandardScaler\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 6\u001b[1;33m \u001b[0mage_scale_param\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mscaler\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdf\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'Age'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      7\u001b[0m \u001b[0mdf\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'Age_scaled'\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mscaler\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfit_transform\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdf\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'Age'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mage_scale_param\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      8\u001b[0m \u001b[0mfare_scale_param\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mscaler\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdf\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'Fare'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\pcApp\\Anaconda3\\lib\\site-packages\\sklearn\\preprocessing\\data.py\u001b[0m in \u001b[0;36mfit\u001b[1;34m(self, X, y)\u001b[0m\n\u001b[0;32m    588\u001b[0m         \u001b[1;31m# Reset internal state before fitting\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    589\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_reset\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 590\u001b[1;33m         \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpartial_fit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    591\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    592\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0mpartial_fit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mX\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\pcApp\\Anaconda3\\lib\\site-packages\\sklearn\\preprocessing\\data.py\u001b[0m in \u001b[0;36mpartial_fit\u001b[1;34m(self, X, y)\u001b[0m\n\u001b[0;32m    610\u001b[0m         \"\"\"\n\u001b[0;32m    611\u001b[0m         X = check_array(X, accept_sparse=('csr', 'csc'), copy=self.copy,\n\u001b[1;32m--> 612\u001b[1;33m                         warn_on_dtype=True, estimator=self, dtype=FLOAT_DTYPES)\n\u001b[0m\u001b[0;32m    613\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    614\u001b[0m         \u001b[1;31m# Even in the case of `with_mean=False`, we update the mean anyway\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\pcApp\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\validation.py\u001b[0m in \u001b[0;36mcheck_array\u001b[1;34m(array, accept_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, ensure_min_samples, ensure_min_features, warn_on_dtype, estimator)\u001b[0m\n\u001b[0;32m    439\u001b[0m                     \u001b[1;34m\"Reshape your data either using array.reshape(-1, 1) if \"\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    440\u001b[0m                     \u001b[1;34m\"your data has a single feature or array.reshape(1, -1) \"\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 441\u001b[1;33m                     \"if it contains a single sample.\".format(array))\n\u001b[0m\u001b[0;32m    442\u001b[0m             \u001b[0marray\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0matleast_2d\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marray\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    443\u001b[0m             \u001b[1;31m# To ensure that array flags are maintained\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mValueError\u001b[0m: Expected 2D array, got 1D array instead:\narray=[22.         38.         26.         35.         35.         23.83895259\n 54.          2.         27.         14.          4.         58.\n 20.         39.         14.         55.          2.         32.06649305\n 31.         29.51820514 35.         34.         15.         28.\n  8.         38.         29.51820514 19.         22.38011324 27.94720616\n 40.         36.10804822 35.2958243  66.         28.         42.\n 22.87630686 21.         18.         14.         40.         27.\n 27.94720616  3.         19.         30.70572678 33.12898535 35.2958243\n 23.45968333 18.          7.         21.         49.         29.\n 65.         44.06483036 21.         28.5         5.         11.\n 22.         38.         45.          4.         41.20008848 17.09991595\n 29.         19.         17.         26.         32.         16.\n 21.         26.         32.         25.         27.94720616 30.70572678\n  0.83       30.         22.         29.         23.32262739 28.\n 17.         33.         16.         30.70572678 23.         24.\n 29.         20.         46.         26.         59.         30.70572678\n 71.         23.         34.         34.         28.         27.94720616\n 21.         33.         37.         28.         21.         27.51545426\n 38.         33.55117591 47.         14.5        22.         20.\n 17.         21.         70.5        29.         24.          2.\n 21.         30.70572678 32.5        32.5        54.         12.\n 35.2958243  24.         25.78337698 45.         33.         20.\n 47.         29.         25.         23.         19.         37.\n 16.         24.         25.34409583 22.         24.         19.\n 18.         19.         27.          9.         36.5        42.\n 51.         22.         55.5        40.5        29.78279613 51.\n 16.         30.         25.52340334 10.86986696 44.         40.\n 26.         17.          1.          9.         26.03188214 45.\n 49.5542756  28.         61.          4.          1.         21.\n 56.         18.          7.30954704 50.         30.         36.\n 10.86986696 31.71894048  9.          1.          4.         46.24976824\n 33.12898535 45.         40.         36.         32.         19.\n 19.          3.         44.         58.         35.2958243  42.\n 35.2958243  24.         28.         10.86986696 34.         45.5\n 18.          2.         32.         26.         16.         40.\n 24.         35.         22.         30.         31.09342985 31.\n 27.         42.         32.         30.         16.         27.\n 51.         27.94720616 38.         22.         19.         20.5\n 18.          7.30954704 35.         29.         59.          5.\n 24.         31.10838452 44.          8.         19.         33.\n 20.80015413 33.12898535 29.         22.         30.         44.\n 25.         24.         37.         54.         29.78279613 29.\n 62.         30.         41.         29.         34.62028571 30.\n 35.         50.         35.2958243   3.         52.         40.\n 35.2958243  36.         16.         25.         58.         35.\n 36.87489821 25.         41.         37.         35.2958243  63.\n 45.         35.05181757  7.         35.         65.         28.\n 16.         19.         57.74249226 33.         30.         22.\n 42.         22.         26.         19.         36.         24.\n 24.         41.20008848 23.5         2.         41.57487718 50.\n 35.2958243  23.31368333 19.         42.57451554 30.70572678  0.92\n 28.57888393 17.         30.         30.         24.         18.\n 26.         28.         43.         26.         24.         54.\n 31.         40.         22.         27.         30.         22.\n 10.86986696 36.         61.         36.         31.         16.\n 23.31368333 45.5        38.         16.         31.42587794 27.94720616\n 29.         41.         45.         45.          2.         24.\n 28.         25.         36.         24.         40.         26.68916849\n  3.         42.         23.         59.96916448 15.         25.\n 29.51820514 28.         22.         38.         22.38011324 22.38011324\n 40.         29.         45.         35.         33.12898535 30.\n 60.         22.87630686 35.2958243  24.         25.         18.\n 19.         22.          3.         31.94479345 22.         27.\n 20.         19.         42.          1.         32.         35.\n 27.94720616 18.          1.         36.         19.89558113 17.\n 36.         21.         28.         23.         24.         22.\n 31.         46.         23.         28.         39.         26.\n 21.         28.         20.         34.         51.          3.\n 21.          7.30954704 27.94720616 20.68131488 33.         35.05181757\n 44.         30.70572678 34.         18.         30.         10.\n 27.94720616 21.         29.         28.         18.         29.78279613\n 28.         19.         35.2958243  32.         28.         26.68916849\n 42.         17.         50.         14.         21.         24.\n 64.         31.         45.         20.         25.         28.\n 23.47643239  4.         13.         34.          5.         52.\n 36.         24.10899881 30.         49.         30.70572678 29.\n 65.         44.06001827 50.         35.2958243  48.         34.\n 47.         48.         30.70572678 38.         35.05181757 56.\n 19.89558113  0.75       29.78279613 38.         33.         23.\n 22.         44.65953056 34.         29.         22.          2.\n  9.         35.05181757 50.         63.         25.          7.30954704\n 35.         58.         30.          9.         24.10899881 21.\n 55.         71.         21.         18.19479484 54.         25.7554753\n 25.         24.         17.         21.         26.82073281 37.\n 16.         18.         33.         49.8994093  28.         26.\n 29.         30.70572678 36.         54.         24.         47.\n 34.         34.17374861 36.         32.         30.         22.\n 29.51820514 44.         22.87630686 40.5        50.         38.5155\n 39.         23.          2.         22.87630686 17.          8.01370298\n 30.          7.         45.         30.         24.33021696 22.\n 36.          9.         11.         32.         50.         64.\n 19.         32.79502428 33.          8.         17.         27.\n 26.3814249  22.         22.         62.         48.         38.5155\n 39.         36.         35.2958243  40.         28.         30.70572678\n 30.70572678 24.         19.         29.         22.87630686 32.\n 62.         53.         36.         35.2958243  16.         19.\n 34.         39.         20.07016773 32.         25.         39.\n 54.         36.         29.04293865 18.         47.         60.\n 22.         30.70572678 35.         52.         47.         27.45639428\n 37.         36.         24.40235514 49.         29.51820514 49.\n 24.         27.94720616 37.51615833 44.         35.         36.\n 30.         27.         22.         40.         39.         27.86873699\n 33.12898535 35.2958243  35.         24.         34.         26.\n  4.         26.         27.         42.         20.         21.\n 21.         61.         57.         21.         26.         19.89558113\n 80.         51.         32.         38.83477484  9.         28.\n 32.         31.         41.         26.68916849 20.         24.\n  2.         29.56889809  0.75       48.         19.         56.\n 31.10838452 23.         27.94720616 18.         21.         26.3814249\n 18.         24.         27.94720616 32.         23.         58.\n 50.         40.         47.         36.         20.         32.\n 25.         27.51545426 43.         39.08817814 40.         31.\n 70.         31.         35.05181757 18.         24.5        18.\n 43.         36.         23.47643239 27.         20.         14.\n 60.         25.         14.         19.         18.         15.\n 31.          4.         29.56889809 25.         60.         52.\n 44.         19.89558113 49.         42.         18.         35.\n 18.         25.         26.         39.         45.         42.\n 22.         17.09991595 24.         49.8994093  48.         29.\n 52.         19.         38.         27.         27.30887391 33.\n  6.         17.         34.         50.         27.         20.\n 30.         19.89558113 25.         25.         29.         11.\n 35.05181757 23.         23.         28.5        48.         35.\n 27.94720616 27.94720616 38.42663175 36.         21.         24.\n 31.         70.         16.         30.         19.         31.\n  4.          6.         33.         23.         48.          0.67\n 28.         18.         34.         33.         24.33021696 41.\n 20.         36.         16.         51.         39.17490238 30.5\n 33.55117591 32.         24.         48.         57.         29.51820514\n 54.         18.         35.2958243   5.         19.89558113 43.\n 13.         17.         29.         16.1939502  25.         25.\n 18.          8.          1.         46.         35.2958243  16.\n 10.86986696 50.38328427 25.         39.         49.         31.\n 30.         30.         34.         31.         11.          0.42\n 27.         31.         39.         18.         39.         33.\n 26.         39.         35.          6.         30.5        38.83477484\n 23.         31.         43.         10.         52.         27.\n 38.         27.          2.         35.09787898 29.56889809  1.\n 35.2958243  62.         15.          0.83       22.87630686 23.\n 18.         39.         21.         30.70572678 32.         50.91095013\n 20.         16.         30.         34.5        17.         42.\n 10.86986696 35.         28.         43.96476448  4.         74.\n  9.         16.         44.         18.         45.         51.\n 24.         22.87630686 41.         21.         48.         10.86986696\n 24.         42.         27.         31.         25.97788916  4.\n 26.         47.         33.         47.         28.         15.\n 20.         19.         27.94720616 56.         25.         33.\n 22.         28.         25.         39.         27.         19.\n 16.1939502  26.         32.        ].\nReshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample."
     ]
    }
   ],
   "source": [
    "# 接下来我们要接着做一些数据预处理的工作，比如scaling，将一些变化幅度较大的特征化到[-1,1]之内\n",
    "# 这样可以加速logistic regression的收敛\n",
    "import sklearn.preprocessing as preprocessing\n",
    "\n",
    "scaler = preprocessing.StandardScaler()\n",
    "age_scale_param = scaler.fit(df['Age'])\n",
    "df['Age_scaled'] = scaler.fit_transform(df['Age'], age_scale_param)\n",
    "fare_scale_param = scaler.fit(df['Fare'])\n",
    "df['Fare_scaled'] = scaler.fit_transform(df['Fare'], fare_scale_param)\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font color=red>我们把需要的feature字段取出来，转成numpy格式，使用scikit-learn中的LogisticRegression建模。<font>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\pcApp\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:5: FutureWarning: Method .as_matrix will be removed in a future version. Use .values instead.\n",
      "  \"\"\"\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n",
       "          intercept_scaling=1, max_iter=100, multi_class='ovr', n_jobs=1,\n",
       "          penalty='l1', random_state=None, solver='liblinear', tol=1e-06,\n",
       "          verbose=0, warm_start=False)"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 我们把需要的feature字段取出来，转成numpy格式，使用scikit-learn中的LogisticRegression建模\n",
    "from sklearn import linear_model\n",
    "\n",
    "train_df = df.filter(regex='Survived|Age_.*|SibSp|Parch|Fare_.*|Cabin_.*|Embarked_.*|Sex_.*|Pclass_.*')\n",
    "train_np = train_df.as_matrix()\n",
    "\n",
    "# y即Survival结果\n",
    "y = train_np[:, 0]\n",
    "\n",
    "# X即特征属性值\n",
    "X = train_np[:, 1:]\n",
    "\n",
    "# fit到RandomForestRegressor之中\n",
    "clf = linear_model.LogisticRegression(C=1.0, penalty='l1', tol=1e-6)\n",
    "clf.fit(X, y)\n",
    "    \n",
    "clf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(891, 12)"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "接下来咱们对训练集和测试集做一样的操作"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\pcApp\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:6: FutureWarning: Method .as_matrix will be removed in a future version. Use .values instead.\n",
      "  \n"
     ]
    },
    {
     "ename": "NameError",
     "evalue": "name 'age_scale_param' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-22-cbed45fcef5b>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[0;32m     19\u001b[0m \u001b[0mdf_test\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mconcat\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mdata_test\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdummies_Cabin\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdummies_Embarked\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdummies_Sex\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdummies_Pclass\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     20\u001b[0m \u001b[0mdf_test\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdrop\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'Pclass'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'Name'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'Sex'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'Ticket'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'Cabin'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'Embarked'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0minplace\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mTrue\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 21\u001b[1;33m \u001b[0mdf_test\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'Age_scaled'\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mscaler\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfit_transform\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdf_test\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'Age'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mage_scale_param\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     22\u001b[0m \u001b[0mdf_test\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'Fare_scaled'\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mscaler\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfit_transform\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdf_test\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'Fare'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfare_scale_param\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     23\u001b[0m \u001b[0mdf_test\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mNameError\u001b[0m: name 'age_scale_param' is not defined"
     ]
    }
   ],
   "source": [
    "data_test = pd.read_csv(\"test.csv\")\n",
    "data_test.loc[ (data_test.Fare.isnull()), 'Fare' ] = 0\n",
    "# 接着我们对test_data做和train_data中一致的特征变换\n",
    "# 首先用同样的RandomForestRegressor模型填上丢失的年龄\n",
    "tmp_df = data_test[['Age','Fare', 'Parch', 'SibSp', 'Pclass']]\n",
    "null_age = tmp_df[data_test.Age.isnull()].as_matrix()\n",
    "# 根据特征属性X预测年龄并补上\n",
    "X = null_age[:, 1:]\n",
    "predictedAges = rfr.predict(X)\n",
    "data_test.loc[ (data_test.Age.isnull()), 'Age' ] = predictedAges\n",
    "\n",
    "data_test = set_Cabin_type(data_test)\n",
    "dummies_Cabin = pd.get_dummies(data_test['Cabin'], prefix= 'Cabin')\n",
    "dummies_Embarked = pd.get_dummies(data_test['Embarked'], prefix= 'Embarked')\n",
    "dummies_Sex = pd.get_dummies(data_test['Sex'], prefix= 'Sex')\n",
    "dummies_Pclass = pd.get_dummies(data_test['Pclass'], prefix= 'Pclass')\n",
    "\n",
    "\n",
    "df_test = pd.concat([data_test, dummies_Cabin, dummies_Embarked, dummies_Sex, dummies_Pclass], axis=1)\n",
    "df_test.drop(['Pclass', 'Name', 'Sex', 'Ticket', 'Cabin', 'Embarked'], axis=1, inplace=True)\n",
    "df_test['Age_scaled'] = scaler.fit_transform(df_test['Age'], age_scale_param)\n",
    "df_test['Fare_scaled'] = scaler.fit_transform(df_test['Fare'], fare_scale_param)\n",
    "df_test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 371,
   "metadata": {},
   "outputs": [],
   "source": [
    "test = df_test.filter(regex='Age_.*|SibSp|Parch|Fare_.*|Cabin_.*|Embarked_.*|Sex_.*|Pclass_.*')\n",
    "predictions = clf.predict(test)\n",
    "result = pd.DataFrame({'PassengerId':data_test['PassengerId'].as_matrix(), 'Survived':predictions.astype(np.int32)})\n",
    "result.to_csv(\"logistic_regression_predictions.csv\", index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 515,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>892</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>893</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>894</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>895</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>896</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>897</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>898</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>899</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>900</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>901</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>902</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>903</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>904</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>905</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>906</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>907</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>908</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>909</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>910</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>911</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>912</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>913</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>914</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>915</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>916</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>917</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>918</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>919</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>920</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>921</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>388</th>\n",
       "      <td>1280</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>389</th>\n",
       "      <td>1281</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>390</th>\n",
       "      <td>1282</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>391</th>\n",
       "      <td>1283</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>392</th>\n",
       "      <td>1284</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>393</th>\n",
       "      <td>1285</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>394</th>\n",
       "      <td>1286</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>395</th>\n",
       "      <td>1287</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>396</th>\n",
       "      <td>1288</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>397</th>\n",
       "      <td>1289</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>398</th>\n",
       "      <td>1290</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>399</th>\n",
       "      <td>1291</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>400</th>\n",
       "      <td>1292</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>401</th>\n",
       "      <td>1293</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>402</th>\n",
       "      <td>1294</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>403</th>\n",
       "      <td>1295</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>404</th>\n",
       "      <td>1296</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>405</th>\n",
       "      <td>1297</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>406</th>\n",
       "      <td>1298</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>407</th>\n",
       "      <td>1299</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>408</th>\n",
       "      <td>1300</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>409</th>\n",
       "      <td>1301</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>410</th>\n",
       "      <td>1302</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>411</th>\n",
       "      <td>1303</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>412</th>\n",
       "      <td>1304</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>413</th>\n",
       "      <td>1305</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>414</th>\n",
       "      <td>1306</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>415</th>\n",
       "      <td>1307</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>416</th>\n",
       "      <td>1308</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>417</th>\n",
       "      <td>1309</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>418 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     PassengerId  Survived\n",
       "0            892         0\n",
       "1            893         0\n",
       "2            894         0\n",
       "3            895         0\n",
       "4            896         1\n",
       "5            897         0\n",
       "6            898         1\n",
       "7            899         0\n",
       "8            900         1\n",
       "9            901         0\n",
       "10           902         0\n",
       "11           903         0\n",
       "12           904         1\n",
       "13           905         0\n",
       "14           906         1\n",
       "15           907         1\n",
       "16           908         0\n",
       "17           909         0\n",
       "18           910         1\n",
       "19           911         1\n",
       "20           912         0\n",
       "21           913         0\n",
       "22           914         1\n",
       "23           915         0\n",
       "24           916         1\n",
       "25           917         0\n",
       "26           918         1\n",
       "27           919         0\n",
       "28           920         0\n",
       "29           921         0\n",
       "..           ...       ...\n",
       "388         1280         0\n",
       "389         1281         0\n",
       "390         1282         1\n",
       "391         1283         1\n",
       "392         1284         0\n",
       "393         1285         0\n",
       "394         1286         0\n",
       "395         1287         1\n",
       "396         1288         0\n",
       "397         1289         1\n",
       "398         1290         0\n",
       "399         1291         0\n",
       "400         1292         1\n",
       "401         1293         0\n",
       "402         1294         1\n",
       "403         1295         0\n",
       "404         1296         0\n",
       "405         1297         1\n",
       "406         1298         0\n",
       "407         1299         0\n",
       "408         1300         1\n",
       "409         1301         1\n",
       "410         1302         1\n",
       "411         1303         1\n",
       "412         1304         1\n",
       "413         1305         0\n",
       "414         1306         1\n",
       "415         1307         0\n",
       "416         1308         0\n",
       "417         1309         0\n",
       "\n",
       "[418 rows x 2 columns]"
      ]
     },
     "execution_count": 515,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.read_csv(\"logistic_regression_predictions.csv\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "<font color=red>0.76555，恩，结果还不错。毕竟，这只是我们简单分析过后出的一个baseline系统嘛</font>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 要判定一下当前模型所处状态(欠拟合or过拟合)\n",
    "\n",
    "<font color=red>有一个很可能发生的问题是，我们不断地做feature engineering，产生的特征越来越多，用这些特征去训练模型，会对我们的训练集拟合得越来越好，同时也可能在逐步丧失泛化能力，从而在待预测的数据上，表现不佳，也就是发生过拟合问题。<font><br>\n",
    "\n",
    "<font color=red>从另一个角度上说，如果模型在待预测的数据上表现不佳，除掉上面说的过拟合问题，也有可能是欠拟合问题，也就是说在训练集上，其实拟合的也不是那么好。<font><br>\n",
    "\n",
    "<font color=red>额，这个欠拟合和过拟合怎么解释呢。这么说吧：<font><br>\n",
    "\n",
    "1. <font color=red>过拟合就像是你班那个学数学比较刻板的同学，老师讲过的题目，一字不漏全记下来了，于是老师再出一样的题目，分分钟精确出结果。but数学考试，因为总是碰到新题目，所以成绩不咋地。<font>\n",
    "2. <font color=red>欠拟合就像是，咳咳，和博主level差不多的差生。连老师讲的练习题也记不住，于是连老师出一样题目复习的周测都做不好，考试更是可想而知了。<font>\n",
    "\n",
    "<font color=red>而在机器学习的问题上，对于过拟合和欠拟合两种情形。我们优化的方式是不同的。<font><br>\n",
    "\n",
    "<font color=red>对过拟合而言，通常以下策略对结果优化是有用的：<font><br>\n",
    "\n",
    "* <font color=red>做一下feature selection，挑出较好的feature的subset来做training\n",
    "* <font color=red>提供更多的数据，从而弥补原始数据的bias问题，学习到的model也会更准确\n",
    "\n",
    "<font color=red>而对于欠拟合而言，我们通常需要更多的feature，更复杂的模型来提高准确度。<font><br>\n",
    "\n",
    "<font color=red>著名的learning curve可以帮我们判定我们的模型现在所处的状态。我们以样本数为横坐标，训练和交叉验证集上的错误率作为纵坐标，两种状态分别如下两张图所示：过拟合(overfitting/high variace)，欠拟合(underfitting/high bias)<font><br>\n",
    "\n",
    "![](http://7xo0y8.com1.z0.glb.clouddn.com/2_titanic/high_variance.png?imageView/2/w/400/q/100)\n",
    "![](http://7xo0y8.com1.z0.glb.clouddn.com/2_titanic/high_bias.png?imageView/2/w/400/q/100)\n",
    "\n",
    "<font color=red>著名的learning curve可以帮我们判定我们的模型现在所处的状态。我们以样本数为横坐标，训练和交叉验证集上的错误率作为纵坐标，两种状态分别如下两张图所示：过拟合(overfitting/high variace)，欠拟合(underfitting/high bias)<font><br>\n",
    "\n",
    "<font color=red>我们也可以把错误率替换成准确率(得分)，得到另一种形式的learning curve(sklearn 里面是这么做的)。<font><br>\n",
    "\n",
    "<font color=red>回到我们的问题，我们用scikit-learn里面的learning_curve来帮我们分辨我们模型的状态。举个例子，这里我们一起画一下我们最先得到的baseline model的learning curve。<font><br>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 579,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/sklearn/cross_validation.py:1601: DeprecationWarning: check_cv will return indices instead of boolean masks from 0.17\n",
      "  def _score(estimator, X_test, y_test, scorer):\n",
      "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/sklearn/cross_validation.py:69: DeprecationWarning: The indices parameter is deprecated and will be removed (assumed True) in 0.17\n",
      "  def __iter__(self):\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "(0.80656968448540245, 0.018258876711338634)"
      ]
     },
     "execution_count": 579,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.learning_curve import learning_curve\n",
    "\n",
    "# 用sklearn的learning_curve得到training_score和cv_score，使用matplotlib画出learning curve\n",
    "def plot_learning_curve(estimator, title, X, y, ylim=None, cv=None, n_jobs=1, \n",
    "                        train_sizes=np.linspace(.05, 1., 20), verbose=0, plot=True):\n",
    "    \"\"\"\n",
    "    画出data在某模型上的learning curve.\n",
    "    参数解释\n",
    "    ----------\n",
    "    estimator : 你用的分类器。\n",
    "    title : 表格的标题。\n",
    "    X : 输入的feature，numpy类型\n",
    "    y : 输入的target vector\n",
    "    ylim : tuple格式的(ymin, ymax), 设定图像中纵坐标的最低点和最高点\n",
    "    cv : 做cross-validation的时候，数据分成的份数，其中一份作为cv集，其余n-1份作为training(默认为3份)\n",
    "    n_jobs : 并行的的任务数(默认1)\n",
    "    \"\"\"\n",
    "    train_sizes, train_scores, test_scores = learning_curve(\n",
    "        estimator, X, y, cv=cv, n_jobs=n_jobs, train_sizes=train_sizes, verbose=verbose)\n",
    "    \n",
    "    train_scores_mean = np.mean(train_scores, axis=1)\n",
    "    train_scores_std = np.std(train_scores, axis=1)\n",
    "    test_scores_mean = np.mean(test_scores, axis=1)\n",
    "    test_scores_std = np.std(test_scores, axis=1)\n",
    "    \n",
    "    if plot:\n",
    "        plt.figure()\n",
    "        plt.title(title)\n",
    "        if ylim is not None:\n",
    "            plt.ylim(*ylim)\n",
    "        plt.xlabel(u\"训练样本数\")\n",
    "        plt.ylabel(u\"得分\")\n",
    "        plt.gca().invert_yaxis()\n",
    "        plt.grid()\n",
    "    \n",
    "        plt.fill_between(train_sizes, train_scores_mean - train_scores_std, train_scores_mean + train_scores_std, \n",
    "                         alpha=0.1, color=\"b\")\n",
    "        plt.fill_between(train_sizes, test_scores_mean - test_scores_std, test_scores_mean + test_scores_std, \n",
    "                         alpha=0.1, color=\"r\")\n",
    "        plt.plot(train_sizes, train_scores_mean, 'o-', color=\"b\", label=u\"训练集上得分\")\n",
    "        plt.plot(train_sizes, test_scores_mean, 'o-', color=\"r\", label=u\"交叉验证集上得分\")\n",
    "    \n",
    "        plt.legend(loc=\"best\")\n",
    "        \n",
    "        plt.draw()\n",
    "        plt.gca().invert_yaxis()\n",
    "        plt.show()\n",
    "    \n",
    "    midpoint = ((train_scores_mean[-1] + train_scores_std[-1]) + (test_scores_mean[-1] - test_scores_std[-1])) / 2\n",
    "    diff = (train_scores_mean[-1] + train_scores_std[-1]) - (test_scores_mean[-1] - test_scores_std[-1])\n",
    "    return midpoint, diff\n",
    "\n",
    "plot_learning_curve(clf, u\"学习曲线\", X, y)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![](http://7xo0y8.com1.z0.glb.clouddn.com/2_titanic/learning_curve.png?imageView/2/w/600/q/100)\n",
    "<font color=red>在实际数据上看，我们得到的learning curve没有理论推导的那么光滑哈，但是可以大致看出来，训练集和交叉验证集上的得分曲线走势还是符合预期的。<font><br>\n",
    "\n",
    "<font color=red>目前的曲线看来，我们的model并不处于overfitting的状态(overfitting的表现一般是训练集上得分高，而交叉验证集上要低很多，中间的gap比较大)。因此我们可以再做些feature engineering的工作，添加一些新产出的特征或者组合特征到模型中。<font><br>"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font color=red>接下来，我们就该看看如何优化baseline系统了<br>\n",
    "我们还有些特征可以再挖掘挖掘<br><br>\n",
    "\n",
    "1. 比如说Name和Ticket两个属性被我们完整舍弃了(好吧，其实是一开始我们对于这种，每一条记录都是一个完全不同的值的属性，并没有很直接的处理方式)<br>\n",
    "2. 比如说，我们想想，年龄的拟合本身也未必是一件非常靠谱的事情<br>\n",
    "3. 另外，以我们的日常经验，小盆友和老人可能得到的照顾会多一些，这样看的话，年龄作为一个连续值，给一个固定的系数，似乎体现不出两头受照顾的实际情况，所以，说不定我们把年龄离散化，按区段分作类别属性会更合适一些<br>\n",
    "\n",
    "那怎么样才知道，哪些地方可以优化，哪些优化的方法是promising的呢？<br>\n",
    "是的<br><br>\n",
    "\n",
    "要做交叉验证(cross validation)!<br>\n",
    "要做交叉验证(cross validation)!<br>\n",
    "要做交叉验证(cross validation)!<br><br>\n",
    "\n",
    "重要的事情说3编！！！<br>\n",
    "因为test.csv里面并没有Survived这个字段(好吧，这是废话，这明明就是我们要预测的结果)，我们无法在这份数据上评定我们算法在该场景下的效果。。。<br>\n",
    "我们通常情况下，这么做cross validation：把train.csv分成两部分，一部分用于训练我们需要的模型，另外一部分数据上看我们预测算法的效果。<br>\n",
    "我们可以用scikit-learn的cross_validation来完成这个工作</font>"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font color=red>在此之前，咱们可以看看现在得到的模型的系数，因为系数和它们最终的判定能力强弱是正相关的</font>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 493,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>coef</th>\n",
       "      <th>columns</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>[-0.344189431858]</td>\n",
       "      <td>SibSp</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>[-0.104924350555]</td>\n",
       "      <td>Parch</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>[0.0]</td>\n",
       "      <td>Cabin_No</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>[0.902071479485]</td>\n",
       "      <td>Cabin_Yes</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>[0.0]</td>\n",
       "      <td>Embarked_C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>[0.0]</td>\n",
       "      <td>Embarked_Q</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>[-0.417226462259]</td>\n",
       "      <td>Embarked_S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>[1.95649520339]</td>\n",
       "      <td>Sex_female</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>[-0.677484871046]</td>\n",
       "      <td>Sex_male</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>[0.341226064445]</td>\n",
       "      <td>Pclass_1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>[0.0]</td>\n",
       "      <td>Pclass_2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>[-1.19410912948]</td>\n",
       "      <td>Pclass_3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>[-0.523774279397]</td>\n",
       "      <td>Age_scaled</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>[0.0844279740271]</td>\n",
       "      <td>Fare_scaled</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                 coef      columns\n",
       "0   [-0.344189431858]        SibSp\n",
       "1   [-0.104924350555]        Parch\n",
       "2               [0.0]     Cabin_No\n",
       "3    [0.902071479485]    Cabin_Yes\n",
       "4               [0.0]   Embarked_C\n",
       "5               [0.0]   Embarked_Q\n",
       "6   [-0.417226462259]   Embarked_S\n",
       "7     [1.95649520339]   Sex_female\n",
       "8   [-0.677484871046]     Sex_male\n",
       "9    [0.341226064445]     Pclass_1\n",
       "10              [0.0]     Pclass_2\n",
       "11   [-1.19410912948]     Pclass_3\n",
       "12  [-0.523774279397]   Age_scaled\n",
       "13  [0.0844279740271]  Fare_scaled"
      ]
     },
     "execution_count": 493,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.DataFrame({\"columns\":list(train_df.columns)[1:], \"coef\":list(clf.coef_.T)})"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "上面的系数和最后的结果是一个正相关的关系<br>\n",
    "我们先看看那些权重绝对值非常大的feature，在我们的模型上：<br>\n",
    "\n",
    "* Sex属性，如果是female会极大提高最后获救的概率，而male会很大程度拉低这个概率。\n",
    "* Pclass属性，1等舱乘客最后获救的概率会上升，而乘客等级为3会极大地拉低这个概率。\n",
    "* 有Cabin值会很大程度拉升最后获救概率(这里似乎能看到了一点端倪，事实上从最上面的有无Cabin记录的Survived分布图上看出，即使有Cabin记录的乘客也有一部分遇难了，估计这个属性上我们挖掘还不够)\n",
    "* Age是一个负相关，意味着在我们的模型里，年龄越小，越有获救的优先权(还得回原数据看看这个是否合理）\n",
    "* 有一个登船港口S会很大程度拉低获救的概率，另外俩港口压根就没啥作用(这个实际上非常奇怪，因为我们从之前的统计图上并没有看到S港口的获救率非常低，所以也许可以考虑把登船港口这个feature去掉试试)。\n",
    "* 船票Fare有小幅度的正相关(并不意味着这个feature作用不大，有可能是我们细化的程度还不够，举个例子，说不定我们得对它离散化，再分至各个乘客等级上？)\n",
    "\n",
    "噢啦，观察完了，我们现在有一些想法了，但是怎么样才知道，哪些优化的方法是promising的呢？<br>\n",
    "\n",
    "恩，要靠交叉验证"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 560,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[ 0.81564246  0.81005587  0.78651685  0.78651685  0.81355932]\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin_No</th>\n",
       "      <th>Cabin_Yes</th>\n",
       "      <th>Embarked_C</th>\n",
       "      <th>Embarked_Q</th>\n",
       "      <th>Embarked_S</th>\n",
       "      <th>Sex_female</th>\n",
       "      <th>Sex_male</th>\n",
       "      <th>Pclass_1</th>\n",
       "      <th>Pclass_2</th>\n",
       "      <th>Pclass_3</th>\n",
       "      <th>Age_scaled</th>\n",
       "      <th>Fare_scaled</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>298</th>\n",
       "      <td>299</td>\n",
       "      <td>1</td>\n",
       "      <td>41.574877</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>30.5000</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.875617</td>\n",
       "      <td>-0.034314</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>15</td>\n",
       "      <td>0</td>\n",
       "      <td>14.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.8542</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>-1.148714</td>\n",
       "      <td>-0.490280</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>803</th>\n",
       "      <td>804</td>\n",
       "      <td>1</td>\n",
       "      <td>0.420000</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>8.5167</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>-2.145650</td>\n",
       "      <td>-0.476941</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>474</th>\n",
       "      <td>475</td>\n",
       "      <td>0</td>\n",
       "      <td>22.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>9.8375</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>-0.561417</td>\n",
       "      <td>-0.450347</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>642</th>\n",
       "      <td>643</td>\n",
       "      <td>0</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>27.9000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>-2.029659</td>\n",
       "      <td>-0.086664</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>55</th>\n",
       "      <td>56</td>\n",
       "      <td>1</td>\n",
       "      <td>44.064830</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>35.5000</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1.058409</td>\n",
       "      <td>0.066360</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>587</th>\n",
       "      <td>588</td>\n",
       "      <td>1</td>\n",
       "      <td>60.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>79.2000</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2.228244</td>\n",
       "      <td>0.946246</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>740</th>\n",
       "      <td>741</td>\n",
       "      <td>1</td>\n",
       "      <td>38.426632</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>30.0000</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.644497</td>\n",
       "      <td>-0.044381</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>839</th>\n",
       "      <td>840</td>\n",
       "      <td>1</td>\n",
       "      <td>50.903700</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>29.7000</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1.560465</td>\n",
       "      <td>-0.050421</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>301</th>\n",
       "      <td>302</td>\n",
       "      <td>1</td>\n",
       "      <td>23.332602</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>23.2500</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>-0.463588</td>\n",
       "      <td>-0.180290</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>567</th>\n",
       "      <td>568</td>\n",
       "      <td>0</td>\n",
       "      <td>29.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>21.0750</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>-0.047532</td>\n",
       "      <td>-0.224083</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>712</th>\n",
       "      <td>713</td>\n",
       "      <td>1</td>\n",
       "      <td>48.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>52.0000</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1.347299</td>\n",
       "      <td>0.398582</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>489</th>\n",
       "      <td>490</td>\n",
       "      <td>1</td>\n",
       "      <td>9.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>15.9000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>-1.515774</td>\n",
       "      <td>-0.328280</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>312</th>\n",
       "      <td>313</td>\n",
       "      <td>0</td>\n",
       "      <td>26.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>26.0000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.267768</td>\n",
       "      <td>-0.124920</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>483</th>\n",
       "      <td>484</td>\n",
       "      <td>1</td>\n",
       "      <td>63.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>9.5875</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2.448480</td>\n",
       "      <td>-0.455380</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>505</th>\n",
       "      <td>506</td>\n",
       "      <td>0</td>\n",
       "      <td>18.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>108.9000</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.855065</td>\n",
       "      <td>1.544246</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>251</th>\n",
       "      <td>252</td>\n",
       "      <td>0</td>\n",
       "      <td>29.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>10.4625</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>-0.047532</td>\n",
       "      <td>-0.437762</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>279</th>\n",
       "      <td>280</td>\n",
       "      <td>1</td>\n",
       "      <td>35.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>20.2500</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.392941</td>\n",
       "      <td>-0.240694</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>838</th>\n",
       "      <td>839</td>\n",
       "      <td>1</td>\n",
       "      <td>32.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>56.4958</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.172705</td>\n",
       "      <td>0.489104</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>564</th>\n",
       "      <td>565</td>\n",
       "      <td>0</td>\n",
       "      <td>30.705727</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.077689</td>\n",
       "      <td>-0.486337</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>390</th>\n",
       "      <td>391</td>\n",
       "      <td>1</td>\n",
       "      <td>36.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>120.0000</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.466353</td>\n",
       "      <td>1.767741</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>643</th>\n",
       "      <td>644</td>\n",
       "      <td>1</td>\n",
       "      <td>29.568898</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>56.4958</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>-0.005768</td>\n",
       "      <td>0.489104</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>267</th>\n",
       "      <td>268</td>\n",
       "      <td>1</td>\n",
       "      <td>25.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>7.7750</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>-0.341180</td>\n",
       "      <td>-0.491874</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>501</th>\n",
       "      <td>502</td>\n",
       "      <td>0</td>\n",
       "      <td>21.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.7500</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>-0.634829</td>\n",
       "      <td>-0.492378</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>113</th>\n",
       "      <td>114</td>\n",
       "      <td>0</td>\n",
       "      <td>20.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>9.8250</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>-0.708241</td>\n",
       "      <td>-0.450598</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>654</th>\n",
       "      <td>655</td>\n",
       "      <td>0</td>\n",
       "      <td>18.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>6.7500</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>-0.855065</td>\n",
       "      <td>-0.512513</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>293</th>\n",
       "      <td>294</td>\n",
       "      <td>0</td>\n",
       "      <td>24.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>8.8500</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>-0.414592</td>\n",
       "      <td>-0.470230</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>503</th>\n",
       "      <td>504</td>\n",
       "      <td>0</td>\n",
       "      <td>37.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>9.5875</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.539765</td>\n",
       "      <td>-0.455380</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>362</th>\n",
       "      <td>363</td>\n",
       "      <td>0</td>\n",
       "      <td>45.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>14.4542</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1.127062</td>\n",
       "      <td>-0.357391</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>570</th>\n",
       "      <td>571</td>\n",
       "      <td>1</td>\n",
       "      <td>62.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>10.5000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2.375068</td>\n",
       "      <td>-0.437007</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>264</th>\n",
       "      <td>265</td>\n",
       "      <td>0</td>\n",
       "      <td>35.295824</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.7500</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.414658</td>\n",
       "      <td>-0.492378</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>762</th>\n",
       "      <td>763</td>\n",
       "      <td>1</td>\n",
       "      <td>20.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.2292</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>-0.708241</td>\n",
       "      <td>-0.502864</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>85</th>\n",
       "      <td>86</td>\n",
       "      <td>1</td>\n",
       "      <td>33.000000</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>15.8500</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.246117</td>\n",
       "      <td>-0.329287</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>140</th>\n",
       "      <td>141</td>\n",
       "      <td>0</td>\n",
       "      <td>25.352908</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>15.2458</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>-0.315273</td>\n",
       "      <td>-0.341452</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>402</th>\n",
       "      <td>403</td>\n",
       "      <td>0</td>\n",
       "      <td>21.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>9.8250</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>-0.634829</td>\n",
       "      <td>-0.450598</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>447</th>\n",
       "      <td>448</td>\n",
       "      <td>1</td>\n",
       "      <td>34.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>26.5500</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.319529</td>\n",
       "      <td>-0.113846</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>204</th>\n",
       "      <td>205</td>\n",
       "      <td>1</td>\n",
       "      <td>18.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>-0.855065</td>\n",
       "      <td>-0.486337</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>240</th>\n",
       "      <td>241</td>\n",
       "      <td>0</td>\n",
       "      <td>20.800154</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>14.4542</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>-0.649500</td>\n",
       "      <td>-0.357391</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>283</th>\n",
       "      <td>284</td>\n",
       "      <td>1</td>\n",
       "      <td>19.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>-0.781653</td>\n",
       "      <td>-0.486337</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>647</th>\n",
       "      <td>648</td>\n",
       "      <td>1</td>\n",
       "      <td>56.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>35.5000</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1.934596</td>\n",
       "      <td>0.066360</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>852</th>\n",
       "      <td>853</td>\n",
       "      <td>0</td>\n",
       "      <td>9.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>15.2458</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>-1.515774</td>\n",
       "      <td>-0.341452</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>788</th>\n",
       "      <td>789</td>\n",
       "      <td>1</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>20.5750</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>-2.103071</td>\n",
       "      <td>-0.234150</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>68</th>\n",
       "      <td>69</td>\n",
       "      <td>1</td>\n",
       "      <td>17.000000</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>-0.928477</td>\n",
       "      <td>-0.488854</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>271</th>\n",
       "      <td>272</td>\n",
       "      <td>1</td>\n",
       "      <td>25.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>-0.341180</td>\n",
       "      <td>-0.648422</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>882</th>\n",
       "      <td>883</td>\n",
       "      <td>0</td>\n",
       "      <td>22.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>10.5167</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>-0.561417</td>\n",
       "      <td>-0.436671</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>65</th>\n",
       "      <td>66</td>\n",
       "      <td>1</td>\n",
       "      <td>17.107664</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>15.2458</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>-0.920573</td>\n",
       "      <td>-0.341452</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>680</th>\n",
       "      <td>681</td>\n",
       "      <td>0</td>\n",
       "      <td>23.476432</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>8.1375</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>-0.453029</td>\n",
       "      <td>-0.484576</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>49</th>\n",
       "      <td>50</td>\n",
       "      <td>0</td>\n",
       "      <td>18.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>17.8000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>-0.855065</td>\n",
       "      <td>-0.290024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>338</th>\n",
       "      <td>339</td>\n",
       "      <td>1</td>\n",
       "      <td>45.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1.127062</td>\n",
       "      <td>-0.486337</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>261</th>\n",
       "      <td>262</td>\n",
       "      <td>1</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>31.3875</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>-1.956247</td>\n",
       "      <td>-0.016444</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     PassengerId  Survived        Age  SibSp  Parch      Fare  Cabin_No  \\\n",
       "298          299         1  41.574877      0      0   30.5000         0   \n",
       "14            15         0  14.000000      0      0    7.8542         1   \n",
       "803          804         1   0.420000      0      1    8.5167         1   \n",
       "474          475         0  22.000000      0      0    9.8375         1   \n",
       "642          643         0   2.000000      3      2   27.9000         1   \n",
       "55            56         1  44.064830      0      0   35.5000         0   \n",
       "587          588         1  60.000000      1      1   79.2000         0   \n",
       "740          741         1  38.426632      0      0   30.0000         0   \n",
       "839          840         1  50.903700      0      0   29.7000         0   \n",
       "301          302         1  23.332602      2      0   23.2500         1   \n",
       "567          568         0  29.000000      0      4   21.0750         1   \n",
       "712          713         1  48.000000      1      0   52.0000         0   \n",
       "489          490         1   9.000000      1      1   15.9000         1   \n",
       "312          313         0  26.000000      1      1   26.0000         1   \n",
       "483          484         1  63.000000      0      0    9.5875         1   \n",
       "505          506         0  18.000000      1      0  108.9000         0   \n",
       "251          252         0  29.000000      1      1   10.4625         0   \n",
       "279          280         1  35.000000      1      1   20.2500         1   \n",
       "838          839         1  32.000000      0      0   56.4958         1   \n",
       "564          565         0  30.705727      0      0    8.0500         1   \n",
       "390          391         1  36.000000      1      2  120.0000         0   \n",
       "643          644         1  29.568898      0      0   56.4958         1   \n",
       "267          268         1  25.000000      1      0    7.7750         1   \n",
       "501          502         0  21.000000      0      0    7.7500         1   \n",
       "113          114         0  20.000000      1      0    9.8250         1   \n",
       "654          655         0  18.000000      0      0    6.7500         1   \n",
       "293          294         0  24.000000      0      0    8.8500         1   \n",
       "503          504         0  37.000000      0      0    9.5875         1   \n",
       "362          363         0  45.000000      0      1   14.4542         1   \n",
       "570          571         1  62.000000      0      0   10.5000         1   \n",
       "264          265         0  35.295824      0      0    7.7500         1   \n",
       "762          763         1  20.000000      0      0    7.2292         1   \n",
       "85            86         1  33.000000      3      0   15.8500         1   \n",
       "140          141         0  25.352908      0      2   15.2458         1   \n",
       "402          403         0  21.000000      1      0    9.8250         1   \n",
       "447          448         1  34.000000      0      0   26.5500         1   \n",
       "204          205         1  18.000000      0      0    8.0500         1   \n",
       "240          241         0  20.800154      1      0   14.4542         1   \n",
       "283          284         1  19.000000      0      0    8.0500         1   \n",
       "647          648         1  56.000000      0      0   35.5000         0   \n",
       "852          853         0   9.000000      1      1   15.2458         1   \n",
       "788          789         1   1.000000      1      2   20.5750         1   \n",
       "68            69         1  17.000000      4      2    7.9250         1   \n",
       "271          272         1  25.000000      0      0    0.0000         1   \n",
       "882          883         0  22.000000      0      0   10.5167         1   \n",
       "65            66         1  17.107664      1      1   15.2458         1   \n",
       "680          681         0  23.476432      0      0    8.1375         1   \n",
       "49            50         0  18.000000      1      0   17.8000         1   \n",
       "338          339         1  45.000000      0      0    8.0500         1   \n",
       "261          262         1   3.000000      4      2   31.3875         1   \n",
       "\n",
       "     Cabin_Yes  Embarked_C  Embarked_Q  Embarked_S  Sex_female  Sex_male  \\\n",
       "298          1           0           0           1           0         1   \n",
       "14           0           0           0           1           1         0   \n",
       "803          0           1           0           0           0         1   \n",
       "474          0           0           0           1           1         0   \n",
       "642          0           0           0           1           1         0   \n",
       "55           1           0           0           1           0         1   \n",
       "587          1           1           0           0           0         1   \n",
       "740          1           0           0           1           0         1   \n",
       "839          1           1           0           0           0         1   \n",
       "301          0           0           1           0           0         1   \n",
       "567          0           0           0           1           1         0   \n",
       "712          1           0           0           1           0         1   \n",
       "489          0           0           0           1           0         1   \n",
       "312          0           0           0           1           1         0   \n",
       "483          0           0           0           1           1         0   \n",
       "505          1           1           0           0           0         1   \n",
       "251          1           0           0           1           1         0   \n",
       "279          0           0           0           1           1         0   \n",
       "838          0           0           0           1           0         1   \n",
       "564          0           0           0           1           1         0   \n",
       "390          1           0           0           1           0         1   \n",
       "643          0           0           0           1           0         1   \n",
       "267          0           0           0           1           0         1   \n",
       "501          0           0           1           0           1         0   \n",
       "113          0           0           0           1           1         0   \n",
       "654          0           0           1           0           1         0   \n",
       "293          0           0           0           1           1         0   \n",
       "503          0           0           0           1           1         0   \n",
       "362          0           1           0           0           1         0   \n",
       "570          0           0           0           1           0         1   \n",
       "264          0           0           1           0           1         0   \n",
       "762          0           1           0           0           0         1   \n",
       "85           0           0           0           1           1         0   \n",
       "140          0           1           0           0           1         0   \n",
       "402          0           0           0           1           1         0   \n",
       "447          0           0           0           1           0         1   \n",
       "204          0           0           0           1           0         1   \n",
       "240          0           1           0           0           1         0   \n",
       "283          0           0           0           1           0         1   \n",
       "647          1           1           0           0           0         1   \n",
       "852          0           1           0           0           1         0   \n",
       "788          0           0           0           1           0         1   \n",
       "68           0           0           0           1           1         0   \n",
       "271          0           0           0           1           0         1   \n",
       "882          0           0           0           1           1         0   \n",
       "65           0           1           0           0           0         1   \n",
       "680          0           0           1           0           1         0   \n",
       "49           0           0           0           1           1         0   \n",
       "338          0           0           0           1           0         1   \n",
       "261          0           0           0           1           0         1   \n",
       "\n",
       "     Pclass_1  Pclass_2  Pclass_3  Age_scaled  Fare_scaled  \n",
       "298         1         0         0    0.875617    -0.034314  \n",
       "14          0         0         1   -1.148714    -0.490280  \n",
       "803         0         0         1   -2.145650    -0.476941  \n",
       "474         0         0         1   -0.561417    -0.450347  \n",
       "642         0         0         1   -2.029659    -0.086664  \n",
       "55          1         0         0    1.058409     0.066360  \n",
       "587         1         0         0    2.228244     0.946246  \n",
       "740         1         0         0    0.644497    -0.044381  \n",
       "839         1         0         0    1.560465    -0.050421  \n",
       "301         0         0         1   -0.463588    -0.180290  \n",
       "567         0         0         1   -0.047532    -0.224083  \n",
       "712         1         0         0    1.347299     0.398582  \n",
       "489         0         0         1   -1.515774    -0.328280  \n",
       "312         0         1         0   -0.267768    -0.124920  \n",
       "483         0         0         1    2.448480    -0.455380  \n",
       "505         1         0         0   -0.855065     1.544246  \n",
       "251         0         0         1   -0.047532    -0.437762  \n",
       "279         0         0         1    0.392941    -0.240694  \n",
       "838         0         0         1    0.172705     0.489104  \n",
       "564         0         0         1    0.077689    -0.486337  \n",
       "390         1         0         0    0.466353     1.767741  \n",
       "643         0         0         1   -0.005768     0.489104  \n",
       "267         0         0         1   -0.341180    -0.491874  \n",
       "501         0         0         1   -0.634829    -0.492378  \n",
       "113         0         0         1   -0.708241    -0.450598  \n",
       "654         0         0         1   -0.855065    -0.512513  \n",
       "293         0         0         1   -0.414592    -0.470230  \n",
       "503         0         0         1    0.539765    -0.455380  \n",
       "362         0         0         1    1.127062    -0.357391  \n",
       "570         0         1         0    2.375068    -0.437007  \n",
       "264         0         0         1    0.414658    -0.492378  \n",
       "762         0         0         1   -0.708241    -0.502864  \n",
       "85          0         0         1    0.246117    -0.329287  \n",
       "140         0         0         1   -0.315273    -0.341452  \n",
       "402         0         0         1   -0.634829    -0.450598  \n",
       "447         1         0         0    0.319529    -0.113846  \n",
       "204         0         0         1   -0.855065    -0.486337  \n",
       "240         0         0         1   -0.649500    -0.357391  \n",
       "283         0         0         1   -0.781653    -0.486337  \n",
       "647         1         0         0    1.934596     0.066360  \n",
       "852         0         0         1   -1.515774    -0.341452  \n",
       "788         0         0         1   -2.103071    -0.234150  \n",
       "68          0         0         1   -0.928477    -0.488854  \n",
       "271         0         0         1   -0.341180    -0.648422  \n",
       "882         0         0         1   -0.561417    -0.436671  \n",
       "65          0         0         1   -0.920573    -0.341452  \n",
       "680         0         0         1   -0.453029    -0.484576  \n",
       "49          0         0         1   -0.855065    -0.290024  \n",
       "338         0         0         1    1.127062    -0.486337  \n",
       "261         0         0         1   -1.956247    -0.016444  "
      ]
     },
     "execution_count": 560,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn import cross_validation\n",
    "\n",
    "# 简单看看打分情况\n",
    "clf = linear_model.LogisticRegression(C=1.0, penalty='l1', tol=1e-6)\n",
    "all_data = df.filter(regex='Survived|Age_.*|SibSp|Parch|Fare_.*|Cabin_.*|Embarked_.*|Sex_.*|Pclass_.*')\n",
    "X = all_data.as_matrix()[:,1:]\n",
    "y = all_data.as_matrix()[:,0]\n",
    "print cross_validation.cross_val_score(clf, X, y, cv=5)\n",
    "\n",
    "\n",
    "# 分割数据\n",
    "split_train, split_cv = cross_validation.train_test_split(\u001d",
    "df, test_size=0.3, random_state=0)\n",
    "train_df = split_train.filter(regex='Survived|Age_.*|SibSp|Parch|Fare_.*|Cabin_.*|Embarked_.*|Sex_.*|Pclass_.*')\n",
    "# 生成模型\n",
    "clf = linear_model.LogisticRegression(C=1.0, penalty='l1', tol=1e-6)\n",
    "clf.fit(train_df.as_matrix()[:,1:], train_df.as_matrix()[:,0])\n",
    "\n",
    "\n",
    "\n",
    "# 对cross validation数据进行预测\n",
    "\n",
    "cv_df = split_cv.filter(regex='Survived|Age_.*|SibSp|Parch|Fare_.*|Cabin_.*|Embarked_.*|Sex_.*|Pclass_.*')\n",
    "predictions = clf.predict(cv_df.as_matrix()[:,1:])\n",
    "split_cv[ predictions != cv_df.as_matrix()[:,0] ].drop()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 562,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>15</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Vestrom, Miss. Hulda Amanda Adolfina</td>\n",
       "      <td>female</td>\n",
       "      <td>14.00</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>350406</td>\n",
       "      <td>7.8542</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>49</th>\n",
       "      <td>50</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Arnold-Franchi, Mrs. Josef (Josefine Franchi)</td>\n",
       "      <td>female</td>\n",
       "      <td>18.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>349237</td>\n",
       "      <td>17.8000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>55</th>\n",
       "      <td>56</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Woolner, Mr. Hugh</td>\n",
       "      <td>male</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>19947</td>\n",
       "      <td>35.5000</td>\n",
       "      <td>C52</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>65</th>\n",
       "      <td>66</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Moubarek, Master. Gerios</td>\n",
       "      <td>male</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2661</td>\n",
       "      <td>15.2458</td>\n",
       "      <td>NaN</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>68</th>\n",
       "      <td>69</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Andersson, Miss. Erna Alexandra</td>\n",
       "      <td>female</td>\n",
       "      <td>17.00</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>3101281</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>85</th>\n",
       "      <td>86</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Backstrom, Mrs. Karl Alfred (Maria Mathilda Gu...</td>\n",
       "      <td>female</td>\n",
       "      <td>33.00</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>3101278</td>\n",
       "      <td>15.8500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>113</th>\n",
       "      <td>114</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Jussila, Miss. Katriina</td>\n",
       "      <td>female</td>\n",
       "      <td>20.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>4136</td>\n",
       "      <td>9.8250</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>140</th>\n",
       "      <td>141</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Boulos, Mrs. Joseph (Sultana)</td>\n",
       "      <td>female</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>2678</td>\n",
       "      <td>15.2458</td>\n",
       "      <td>NaN</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>204</th>\n",
       "      <td>205</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Cohen, Mr. Gurshon \"Gus\"</td>\n",
       "      <td>male</td>\n",
       "      <td>18.00</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>A/5 3540</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>240</th>\n",
       "      <td>241</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Zabour, Miss. Thamine</td>\n",
       "      <td>female</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2665</td>\n",
       "      <td>14.4542</td>\n",
       "      <td>NaN</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>251</th>\n",
       "      <td>252</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Strom, Mrs. Wilhelm (Elna Matilda Persson)</td>\n",
       "      <td>female</td>\n",
       "      <td>29.00</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>347054</td>\n",
       "      <td>10.4625</td>\n",
       "      <td>G6</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>261</th>\n",
       "      <td>262</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Asplund, Master. Edvin Rojj Felix</td>\n",
       "      <td>male</td>\n",
       "      <td>3.00</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>347077</td>\n",
       "      <td>31.3875</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>264</th>\n",
       "      <td>265</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Henry, Miss. Delia</td>\n",
       "      <td>female</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>382649</td>\n",
       "      <td>7.7500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Q</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>267</th>\n",
       "      <td>268</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Persson, Mr. Ernst Ulrik</td>\n",
       "      <td>male</td>\n",
       "      <td>25.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>347083</td>\n",
       "      <td>7.7750</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>271</th>\n",
       "      <td>272</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Tornquist, Mr. William Henry</td>\n",
       "      <td>male</td>\n",
       "      <td>25.00</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>LINE</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>279</th>\n",
       "      <td>280</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Abbott, Mrs. Stanton (Rosa Hunt)</td>\n",
       "      <td>female</td>\n",
       "      <td>35.00</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>C.A. 2673</td>\n",
       "      <td>20.2500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>283</th>\n",
       "      <td>284</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Dorking, Mr. Edward Arthur</td>\n",
       "      <td>male</td>\n",
       "      <td>19.00</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>A/5. 10482</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>293</th>\n",
       "      <td>294</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Haas, Miss. Aloisia</td>\n",
       "      <td>female</td>\n",
       "      <td>24.00</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>349236</td>\n",
       "      <td>8.8500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>298</th>\n",
       "      <td>299</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Saalfeld, Mr. Adolphe</td>\n",
       "      <td>male</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>19988</td>\n",
       "      <td>30.5000</td>\n",
       "      <td>C106</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>301</th>\n",
       "      <td>302</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>McCoy, Mr. Bernard</td>\n",
       "      <td>male</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>367226</td>\n",
       "      <td>23.2500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Q</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>312</th>\n",
       "      <td>313</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>Lahtinen, Mrs. William (Anna Sylfven)</td>\n",
       "      <td>female</td>\n",
       "      <td>26.00</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>250651</td>\n",
       "      <td>26.0000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>338</th>\n",
       "      <td>339</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Dahl, Mr. Karl Edwart</td>\n",
       "      <td>male</td>\n",
       "      <td>45.00</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7598</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>362</th>\n",
       "      <td>363</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Barbara, Mrs. (Catherine David)</td>\n",
       "      <td>female</td>\n",
       "      <td>45.00</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2691</td>\n",
       "      <td>14.4542</td>\n",
       "      <td>NaN</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>390</th>\n",
       "      <td>391</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Carter, Mr. William Ernest</td>\n",
       "      <td>male</td>\n",
       "      <td>36.00</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>113760</td>\n",
       "      <td>120.0000</td>\n",
       "      <td>B96 B98</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>402</th>\n",
       "      <td>403</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Jussila, Miss. Mari Aina</td>\n",
       "      <td>female</td>\n",
       "      <td>21.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>4137</td>\n",
       "      <td>9.8250</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>447</th>\n",
       "      <td>448</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Seward, Mr. Frederic Kimber</td>\n",
       "      <td>male</td>\n",
       "      <td>34.00</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>113794</td>\n",
       "      <td>26.5500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>474</th>\n",
       "      <td>475</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Strandberg, Miss. Ida Sofia</td>\n",
       "      <td>female</td>\n",
       "      <td>22.00</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7553</td>\n",
       "      <td>9.8375</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>483</th>\n",
       "      <td>484</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Turkula, Mrs. (Hedwig)</td>\n",
       "      <td>female</td>\n",
       "      <td>63.00</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4134</td>\n",
       "      <td>9.5875</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>489</th>\n",
       "      <td>490</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Coutts, Master. Eden Leslie \"Neville\"</td>\n",
       "      <td>male</td>\n",
       "      <td>9.00</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>C.A. 37671</td>\n",
       "      <td>15.9000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>501</th>\n",
       "      <td>502</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Canavan, Miss. Mary</td>\n",
       "      <td>female</td>\n",
       "      <td>21.00</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>364846</td>\n",
       "      <td>7.7500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Q</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>503</th>\n",
       "      <td>504</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Laitinen, Miss. Kristina Sofia</td>\n",
       "      <td>female</td>\n",
       "      <td>37.00</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4135</td>\n",
       "      <td>9.5875</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>505</th>\n",
       "      <td>506</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>Penasco y Castellana, Mr. Victor de Satode</td>\n",
       "      <td>male</td>\n",
       "      <td>18.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>PC 17758</td>\n",
       "      <td>108.9000</td>\n",
       "      <td>C65</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>564</th>\n",
       "      <td>565</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Meanwell, Miss. (Marion Ogden)</td>\n",
       "      <td>female</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>SOTON/O.Q. 392087</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>567</th>\n",
       "      <td>568</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Palsson, Mrs. Nils (Alma Cornelia Berglund)</td>\n",
       "      <td>female</td>\n",
       "      <td>29.00</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>349909</td>\n",
       "      <td>21.0750</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>570</th>\n",
       "      <td>571</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>Harris, Mr. George</td>\n",
       "      <td>male</td>\n",
       "      <td>62.00</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>S.W./PP 752</td>\n",
       "      <td>10.5000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>587</th>\n",
       "      <td>588</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Frolicher-Stehli, Mr. Maxmillian</td>\n",
       "      <td>male</td>\n",
       "      <td>60.00</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>13567</td>\n",
       "      <td>79.2000</td>\n",
       "      <td>B41</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>642</th>\n",
       "      <td>643</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Skoog, Miss. Margit Elizabeth</td>\n",
       "      <td>female</td>\n",
       "      <td>2.00</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>347088</td>\n",
       "      <td>27.9000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>643</th>\n",
       "      <td>644</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Foo, Mr. Choong</td>\n",
       "      <td>male</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1601</td>\n",
       "      <td>56.4958</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>647</th>\n",
       "      <td>648</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Simonius-Blumer, Col. Oberst Alfons</td>\n",
       "      <td>male</td>\n",
       "      <td>56.00</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>13213</td>\n",
       "      <td>35.5000</td>\n",
       "      <td>A26</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>654</th>\n",
       "      <td>655</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Hegarty, Miss. Hanora \"Nora\"</td>\n",
       "      <td>female</td>\n",
       "      <td>18.00</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>365226</td>\n",
       "      <td>6.7500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Q</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>680</th>\n",
       "      <td>681</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Peters, Miss. Katie</td>\n",
       "      <td>female</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>330935</td>\n",
       "      <td>8.1375</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Q</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>712</th>\n",
       "      <td>713</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Taylor, Mr. Elmer Zebley</td>\n",
       "      <td>male</td>\n",
       "      <td>48.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>19996</td>\n",
       "      <td>52.0000</td>\n",
       "      <td>C126</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>740</th>\n",
       "      <td>741</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Hawksford, Mr. Walter James</td>\n",
       "      <td>male</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>16988</td>\n",
       "      <td>30.0000</td>\n",
       "      <td>D45</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>762</th>\n",
       "      <td>763</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Barah, Mr. Hanna Assi</td>\n",
       "      <td>male</td>\n",
       "      <td>20.00</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2663</td>\n",
       "      <td>7.2292</td>\n",
       "      <td>NaN</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>788</th>\n",
       "      <td>789</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Dean, Master. Bertram Vere</td>\n",
       "      <td>male</td>\n",
       "      <td>1.00</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>C.A. 2315</td>\n",
       "      <td>20.5750</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>803</th>\n",
       "      <td>804</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Thomas, Master. Assad Alexander</td>\n",
       "      <td>male</td>\n",
       "      <td>0.42</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2625</td>\n",
       "      <td>8.5167</td>\n",
       "      <td>NaN</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>838</th>\n",
       "      <td>839</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Chip, Mr. Chang</td>\n",
       "      <td>male</td>\n",
       "      <td>32.00</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1601</td>\n",
       "      <td>56.4958</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>839</th>\n",
       "      <td>840</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Marechal, Mr. Pierre</td>\n",
       "      <td>male</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>11774</td>\n",
       "      <td>29.7000</td>\n",
       "      <td>C47</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>852</th>\n",
       "      <td>853</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Boulos, Miss. Nourelain</td>\n",
       "      <td>female</td>\n",
       "      <td>9.00</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2678</td>\n",
       "      <td>15.2458</td>\n",
       "      <td>NaN</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>882</th>\n",
       "      <td>883</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Dahlberg, Miss. Gerda Ulrika</td>\n",
       "      <td>female</td>\n",
       "      <td>22.00</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7552</td>\n",
       "      <td>10.5167</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     PassengerId  Survived  Pclass  \\\n",
       "14            15         0       3   \n",
       "49            50         0       3   \n",
       "55            56         1       1   \n",
       "65            66         1       3   \n",
       "68            69         1       3   \n",
       "85            86         1       3   \n",
       "113          114         0       3   \n",
       "140          141         0       3   \n",
       "204          205         1       3   \n",
       "240          241         0       3   \n",
       "251          252         0       3   \n",
       "261          262         1       3   \n",
       "264          265         0       3   \n",
       "267          268         1       3   \n",
       "271          272         1       3   \n",
       "279          280         1       3   \n",
       "283          284         1       3   \n",
       "293          294         0       3   \n",
       "298          299         1       1   \n",
       "301          302         1       3   \n",
       "312          313         0       2   \n",
       "338          339         1       3   \n",
       "362          363         0       3   \n",
       "390          391         1       1   \n",
       "402          403         0       3   \n",
       "447          448         1       1   \n",
       "474          475         0       3   \n",
       "483          484         1       3   \n",
       "489          490         1       3   \n",
       "501          502         0       3   \n",
       "503          504         0       3   \n",
       "505          506         0       1   \n",
       "564          565         0       3   \n",
       "567          568         0       3   \n",
       "570          571         1       2   \n",
       "587          588         1       1   \n",
       "642          643         0       3   \n",
       "643          644         1       3   \n",
       "647          648         1       1   \n",
       "654          655         0       3   \n",
       "680          681         0       3   \n",
       "712          713         1       1   \n",
       "740          741         1       1   \n",
       "762          763         1       3   \n",
       "788          789         1       3   \n",
       "803          804         1       3   \n",
       "838          839         1       3   \n",
       "839          840         1       1   \n",
       "852          853         0       3   \n",
       "882          883         0       3   \n",
       "\n",
       "                                                  Name     Sex    Age  SibSp  \\\n",
       "14                Vestrom, Miss. Hulda Amanda Adolfina  female  14.00      0   \n",
       "49       Arnold-Franchi, Mrs. Josef (Josefine Franchi)  female  18.00      1   \n",
       "55                                   Woolner, Mr. Hugh    male    NaN      0   \n",
       "65                            Moubarek, Master. Gerios    male    NaN      1   \n",
       "68                     Andersson, Miss. Erna Alexandra  female  17.00      4   \n",
       "85   Backstrom, Mrs. Karl Alfred (Maria Mathilda Gu...  female  33.00      3   \n",
       "113                            Jussila, Miss. Katriina  female  20.00      1   \n",
       "140                      Boulos, Mrs. Joseph (Sultana)  female    NaN      0   \n",
       "204                           Cohen, Mr. Gurshon \"Gus\"    male  18.00      0   \n",
       "240                              Zabour, Miss. Thamine  female    NaN      1   \n",
       "251         Strom, Mrs. Wilhelm (Elna Matilda Persson)  female  29.00      1   \n",
       "261                  Asplund, Master. Edvin Rojj Felix    male   3.00      4   \n",
       "264                                 Henry, Miss. Delia  female    NaN      0   \n",
       "267                           Persson, Mr. Ernst Ulrik    male  25.00      1   \n",
       "271                       Tornquist, Mr. William Henry    male  25.00      0   \n",
       "279                   Abbott, Mrs. Stanton (Rosa Hunt)  female  35.00      1   \n",
       "283                         Dorking, Mr. Edward Arthur    male  19.00      0   \n",
       "293                                Haas, Miss. Aloisia  female  24.00      0   \n",
       "298                              Saalfeld, Mr. Adolphe    male    NaN      0   \n",
       "301                                 McCoy, Mr. Bernard    male    NaN      2   \n",
       "312              Lahtinen, Mrs. William (Anna Sylfven)  female  26.00      1   \n",
       "338                              Dahl, Mr. Karl Edwart    male  45.00      0   \n",
       "362                    Barbara, Mrs. (Catherine David)  female  45.00      0   \n",
       "390                         Carter, Mr. William Ernest    male  36.00      1   \n",
       "402                           Jussila, Miss. Mari Aina  female  21.00      1   \n",
       "447                        Seward, Mr. Frederic Kimber    male  34.00      0   \n",
       "474                        Strandberg, Miss. Ida Sofia  female  22.00      0   \n",
       "483                             Turkula, Mrs. (Hedwig)  female  63.00      0   \n",
       "489              Coutts, Master. Eden Leslie \"Neville\"    male   9.00      1   \n",
       "501                                Canavan, Miss. Mary  female  21.00      0   \n",
       "503                     Laitinen, Miss. Kristina Sofia  female  37.00      0   \n",
       "505         Penasco y Castellana, Mr. Victor de Satode    male  18.00      1   \n",
       "564                     Meanwell, Miss. (Marion Ogden)  female    NaN      0   \n",
       "567        Palsson, Mrs. Nils (Alma Cornelia Berglund)  female  29.00      0   \n",
       "570                                 Harris, Mr. George    male  62.00      0   \n",
       "587                   Frolicher-Stehli, Mr. Maxmillian    male  60.00      1   \n",
       "642                      Skoog, Miss. Margit Elizabeth  female   2.00      3   \n",
       "643                                    Foo, Mr. Choong    male    NaN      0   \n",
       "647                Simonius-Blumer, Col. Oberst Alfons    male  56.00      0   \n",
       "654                       Hegarty, Miss. Hanora \"Nora\"  female  18.00      0   \n",
       "680                                Peters, Miss. Katie  female    NaN      0   \n",
       "712                           Taylor, Mr. Elmer Zebley    male  48.00      1   \n",
       "740                        Hawksford, Mr. Walter James    male    NaN      0   \n",
       "762                              Barah, Mr. Hanna Assi    male  20.00      0   \n",
       "788                         Dean, Master. Bertram Vere    male   1.00      1   \n",
       "803                    Thomas, Master. Assad Alexander    male   0.42      0   \n",
       "838                                    Chip, Mr. Chang    male  32.00      0   \n",
       "839                               Marechal, Mr. Pierre    male    NaN      0   \n",
       "852                            Boulos, Miss. Nourelain  female   9.00      1   \n",
       "882                       Dahlberg, Miss. Gerda Ulrika  female  22.00      0   \n",
       "\n",
       "     Parch             Ticket      Fare    Cabin Embarked  \n",
       "14       0             350406    7.8542      NaN        S  \n",
       "49       0             349237   17.8000      NaN        S  \n",
       "55       0              19947   35.5000      C52        S  \n",
       "65       1               2661   15.2458      NaN        C  \n",
       "68       2            3101281    7.9250      NaN        S  \n",
       "85       0            3101278   15.8500      NaN        S  \n",
       "113      0               4136    9.8250      NaN        S  \n",
       "140      2               2678   15.2458      NaN        C  \n",
       "204      0           A/5 3540    8.0500      NaN        S  \n",
       "240      0               2665   14.4542      NaN        C  \n",
       "251      1             347054   10.4625       G6        S  \n",
       "261      2             347077   31.3875      NaN        S  \n",
       "264      0             382649    7.7500      NaN        Q  \n",
       "267      0             347083    7.7750      NaN        S  \n",
       "271      0               LINE    0.0000      NaN        S  \n",
       "279      1          C.A. 2673   20.2500      NaN        S  \n",
       "283      0         A/5. 10482    8.0500      NaN        S  \n",
       "293      0             349236    8.8500      NaN        S  \n",
       "298      0              19988   30.5000     C106        S  \n",
       "301      0             367226   23.2500      NaN        Q  \n",
       "312      1             250651   26.0000      NaN        S  \n",
       "338      0               7598    8.0500      NaN        S  \n",
       "362      1               2691   14.4542      NaN        C  \n",
       "390      2             113760  120.0000  B96 B98        S  \n",
       "402      0               4137    9.8250      NaN        S  \n",
       "447      0             113794   26.5500      NaN        S  \n",
       "474      0               7553    9.8375      NaN        S  \n",
       "483      0               4134    9.5875      NaN        S  \n",
       "489      1         C.A. 37671   15.9000      NaN        S  \n",
       "501      0             364846    7.7500      NaN        Q  \n",
       "503      0               4135    9.5875      NaN        S  \n",
       "505      0           PC 17758  108.9000      C65        C  \n",
       "564      0  SOTON/O.Q. 392087    8.0500      NaN        S  \n",
       "567      4             349909   21.0750      NaN        S  \n",
       "570      0        S.W./PP 752   10.5000      NaN        S  \n",
       "587      1              13567   79.2000      B41        C  \n",
       "642      2             347088   27.9000      NaN        S  \n",
       "643      0               1601   56.4958      NaN        S  \n",
       "647      0              13213   35.5000      A26        C  \n",
       "654      0             365226    6.7500      NaN        Q  \n",
       "680      0             330935    8.1375      NaN        Q  \n",
       "712      0              19996   52.0000     C126        S  \n",
       "740      0              16988   30.0000      D45        S  \n",
       "762      0               2663    7.2292      NaN        C  \n",
       "788      2          C.A. 2315   20.5750      NaN        S  \n",
       "803      1               2625    8.5167      NaN        C  \n",
       "838      0               1601   56.4958      NaN        S  \n",
       "839      0              11774   29.7000      C47        C  \n",
       "852      1               2678   15.2458      NaN        C  \n",
       "882      0               7552   10.5167      NaN        S  "
      ]
     },
     "execution_count": 562,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 去除预测错误的case看原始dataframe数据\n",
    "#split_cv['PredictResult'] = predictions\n",
    "origin_data_train = pd.read_csv(\"Train.csv\")\n",
    "bad_cases = origin_data_train.loc[origin_data_train['PassengerId'].isin(split_cv[predictions != cv_df.as_matrix()[:,0]]['PassengerId'].values)]\n",
    "bad_cases"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "对比bad case，我们仔细看看我们预测错的样本，到底是哪些特征有问题，咱们处理得还不够细？<br>\n",
    "\n",
    "我们随便列一些可能可以做的优化操作：<br>\n",
    "\n",
    "* Age属性不使用现在的拟合方式，而是根据名称中的『Mr』『Mrs』『Miss』等的平均值进行填充。\n",
    "* Age不做成一个连续值属性，而是使用一个步长进行离散化，变成离散的类目feature。\n",
    "* Cabin再细化一些，对于有记录的Cabin属性，我们将其分为前面的字母部分(我猜是位置和船层之类的信息) 和 后面的数字部分(应该是房间号，有意思的事情是，如果你仔细看看原始数据，你会发现，这个值大的情况下，似乎获救的可能性高一些)。\n",
    "* Pclass和Sex俩太重要了，我们试着用它们去组出一个组合属性来试试，这也是另外一种程度的细化。\n",
    "* 单加一个Child字段，Age<=12的，设为1，其余为0(你去看看数据，确实小盆友优先程度很高啊)\n",
    "* 如果名字里面有『Mrs』，而Parch>1的，我们猜测她可能是一个母亲，应该获救的概率也会提高，因此可以多加一个Mother字段，此种情况下设为1，其余情况下设为0\n",
    "* 登船港口可以考虑先去掉试试(Q和C本来就没权重，S有点诡异)\n",
    "* 把堂兄弟/兄妹 和 Parch 还有自己 个数加在一起组一个Family_size字段(考虑到大家族可能对最后的结果有影响)\n",
    "* Name是一个我们一直没有触碰的属性，我们可以做一些简单的处理，比如说男性中带某些字眼的(‘Capt’, ‘Don’, ‘Major’, ‘Sir’)可以统一到一个Title，女性也一样。\n",
    "\n",
    "大家接着往下挖掘，可能还可以想到更多可以细挖的部分。我这里先列这些了，然后我们可以使用手头上的”train_df”和”cv_df”开始试验这些feature engineering的tricks是否有效了。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 440,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>449</th>\n",
       "      <td>450</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Peuchen, Major. Arthur Godfrey</td>\n",
       "      <td>male</td>\n",
       "      <td>52</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>113786</td>\n",
       "      <td>30.50</td>\n",
       "      <td>Yes</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>536</th>\n",
       "      <td>537</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>Butt, Major. Archibald Willingham</td>\n",
       "      <td>male</td>\n",
       "      <td>45</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>113050</td>\n",
       "      <td>26.55</td>\n",
       "      <td>Yes</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     PassengerId  Survived  Pclass                               Name   Sex  \\\n",
       "449          450         1       1     Peuchen, Major. Arthur Godfrey  male   \n",
       "536          537         0       1  Butt, Major. Archibald Willingham  male   \n",
       "\n",
       "     Age  SibSp  Parch  Ticket   Fare Cabin Embarked  \n",
       "449   52      0      0  113786  30.50   Yes        S  \n",
       "536   45      0      0  113050  26.55   Yes        S  "
      ]
     },
     "execution_count": 440,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_train[data_train['Name'].str.contains(\"Major\")]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\pcApp\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:13: FutureWarning: Method .as_matrix will be removed in a future version. Use .values instead.\n",
      "  del sys.path[0]\n",
      "D:\\pcApp\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:14: FutureWarning: Method .as_matrix will be removed in a future version. Use .values instead.\n",
      "  \n"
     ]
    },
    {
     "ename": "ValueError",
     "evalue": "Expected 2D array, got 1D array instead:\narray=[22.         38.         26.         35.         35.         23.83895259\n 54.          2.         27.         14.          4.         58.\n 20.         39.         14.         55.          2.         32.06649305\n 31.         29.51820514 35.         34.         15.         28.\n  8.         38.         29.51820514 19.         22.38011324 27.94720616\n 40.         36.10804822 35.2958243  66.         28.         42.\n 22.87630686 21.         18.         14.         40.         27.\n 27.94720616  3.         19.         30.70572678 33.12898535 35.2958243\n 23.45968333 18.          7.         21.         49.         29.\n 65.         44.06483036 21.         28.5         5.         11.\n 22.         38.         45.          4.         41.20008848 17.09991595\n 29.         19.         17.         26.         32.         16.\n 21.         26.         32.         25.         27.94720616 30.70572678\n  0.83       30.         22.         29.         23.32262739 28.\n 17.         33.         16.         30.70572678 23.         24.\n 29.         20.         46.         26.         59.         30.70572678\n 71.         23.         34.         34.         28.         27.94720616\n 21.         33.         37.         28.         21.         27.51545426\n 38.         33.55117591 47.         14.5        22.         20.\n 17.         21.         70.5        29.         24.          2.\n 21.         30.70572678 32.5        32.5        54.         12.\n 35.2958243  24.         25.78337698 45.         33.         20.\n 47.         29.         25.         23.         19.         37.\n 16.         24.         25.34409583 22.         24.         19.\n 18.         19.         27.          9.         36.5        42.\n 51.         22.         55.5        40.5        29.78279613 51.\n 16.         30.         25.52340334 10.86986696 44.         40.\n 26.         17.          1.          9.         26.03188214 45.\n 49.5542756  28.         61.          4.          1.         21.\n 56.         18.          7.30954704 50.         30.         36.\n 10.86986696 31.71894048  9.          1.          4.         46.24976824\n 33.12898535 45.         40.         36.         32.         19.\n 19.          3.         44.         58.         35.2958243  42.\n 35.2958243  24.         28.         10.86986696 34.         45.5\n 18.          2.         32.         26.         16.         40.\n 24.         35.         22.         30.         31.09342985 31.\n 27.         42.         32.         30.         16.         27.\n 51.         27.94720616 38.         22.         19.         20.5\n 18.          7.30954704 35.         29.         59.          5.\n 24.         31.10838452 44.          8.         19.         33.\n 20.80015413 33.12898535 29.         22.         30.         44.\n 25.         24.         37.         54.         29.78279613 29.\n 62.         30.         41.         29.         34.62028571 30.\n 35.         50.         35.2958243   3.         52.         40.\n 35.2958243  36.         16.         25.         58.         35.\n 36.87489821 25.         41.         37.         35.2958243  63.\n 45.         35.05181757  7.         35.         65.         28.\n 16.         19.         57.74249226 33.         30.         22.\n 42.         22.         26.         19.         36.         24.\n 24.         41.20008848 23.5         2.         41.57487718 50.\n 35.2958243  23.31368333 19.         42.57451554 30.70572678  0.92\n 28.57888393 17.         30.         30.         24.         18.\n 26.         28.         43.         26.         24.         54.\n 31.         40.         22.         27.         30.         22.\n 10.86986696 36.         61.         36.         31.         16.\n 23.31368333 45.5        38.         16.         31.42587794 27.94720616\n 29.         41.         45.         45.          2.         24.\n 28.         25.         36.         24.         40.         26.68916849\n  3.         42.         23.         59.96916448 15.         25.\n 29.51820514 28.         22.         38.         22.38011324 22.38011324\n 40.         29.         45.         35.         33.12898535 30.\n 60.         22.87630686 35.2958243  24.         25.         18.\n 19.         22.          3.         31.94479345 22.         27.\n 20.         19.         42.          1.         32.         35.\n 27.94720616 18.          1.         36.         19.89558113 17.\n 36.         21.         28.         23.         24.         22.\n 31.         46.         23.         28.         39.         26.\n 21.         28.         20.         34.         51.          3.\n 21.          7.30954704 27.94720616 20.68131488 33.         35.05181757\n 44.         30.70572678 34.         18.         30.         10.\n 27.94720616 21.         29.         28.         18.         29.78279613\n 28.         19.         35.2958243  32.         28.         26.68916849\n 42.         17.         50.         14.         21.         24.\n 64.         31.         45.         20.         25.         28.\n 23.47643239  4.         13.         34.          5.         52.\n 36.         24.10899881 30.         49.         30.70572678 29.\n 65.         44.06001827 50.         35.2958243  48.         34.\n 47.         48.         30.70572678 38.         35.05181757 56.\n 19.89558113  0.75       29.78279613 38.         33.         23.\n 22.         44.65953056 34.         29.         22.          2.\n  9.         35.05181757 50.         63.         25.          7.30954704\n 35.         58.         30.          9.         24.10899881 21.\n 55.         71.         21.         18.19479484 54.         25.7554753\n 25.         24.         17.         21.         26.82073281 37.\n 16.         18.         33.         49.8994093  28.         26.\n 29.         30.70572678 36.         54.         24.         47.\n 34.         34.17374861 36.         32.         30.         22.\n 29.51820514 44.         22.87630686 40.5        50.         38.5155\n 39.         23.          2.         22.87630686 17.          8.01370298\n 30.          7.         45.         30.         24.33021696 22.\n 36.          9.         11.         32.         50.         64.\n 19.         32.79502428 33.          8.         17.         27.\n 26.3814249  22.         22.         62.         48.         38.5155\n 39.         36.         35.2958243  40.         28.         30.70572678\n 30.70572678 24.         19.         29.         22.87630686 32.\n 62.         53.         36.         35.2958243  16.         19.\n 34.         39.         20.07016773 32.         25.         39.\n 54.         36.         29.04293865 18.         47.         60.\n 22.         30.70572678 35.         52.         47.         27.45639428\n 37.         36.         24.40235514 49.         29.51820514 49.\n 24.         27.94720616 37.51615833 44.         35.         36.\n 30.         27.         22.         40.         39.         27.86873699\n 33.12898535 35.2958243  35.         24.         34.         26.\n  4.         26.         27.         42.         20.         21.\n 21.         61.         57.         21.         26.         19.89558113\n 80.         51.         32.         38.83477484  9.         28.\n 32.         31.         41.         26.68916849 20.         24.\n  2.         29.56889809  0.75       48.         19.         56.\n 31.10838452 23.         27.94720616 18.         21.         26.3814249\n 18.         24.         27.94720616 32.         23.         58.\n 50.         40.         47.         36.         20.         32.\n 25.         27.51545426 43.         39.08817814 40.         31.\n 70.         31.         35.05181757 18.         24.5        18.\n 43.         36.         23.47643239 27.         20.         14.\n 60.         25.         14.         19.         18.         15.\n 31.          4.         29.56889809 25.         60.         52.\n 44.         19.89558113 49.         42.         18.         35.\n 18.         25.         26.         39.         45.         42.\n 22.         17.09991595 24.         49.8994093  48.         29.\n 52.         19.         38.         27.         27.30887391 33.\n  6.         17.         34.         50.         27.         20.\n 30.         19.89558113 25.         25.         29.         11.\n 35.05181757 23.         23.         28.5        48.         35.\n 27.94720616 27.94720616 38.42663175 36.         21.         24.\n 31.         70.         16.         30.         19.         31.\n  4.          6.         33.         23.         48.          0.67\n 28.         18.         34.         33.         24.33021696 41.\n 20.         36.         16.         51.         39.17490238 30.5\n 33.55117591 32.         24.         48.         57.         29.51820514\n 54.         18.         35.2958243   5.         19.89558113 43.\n 13.         17.         29.         16.1939502  25.         25.\n 18.          8.          1.         46.         35.2958243  16.\n 10.86986696 50.38328427 25.         39.         49.         31.\n 30.         30.         34.         31.         11.          0.42\n 27.         31.         39.         18.         39.         33.\n 26.         39.         35.          6.         30.5        38.83477484\n 23.         31.         43.         10.         52.         27.\n 38.         27.          2.         35.09787898 29.56889809  1.\n 35.2958243  62.         15.          0.83       22.87630686 23.\n 18.         39.         21.         30.70572678 32.         50.91095013\n 20.         16.         30.         34.5        17.         42.\n 10.86986696 35.         28.         43.96476448  4.         74.\n  9.         16.         44.         18.         45.         51.\n 24.         22.87630686 41.         21.         48.         10.86986696\n 24.         42.         27.         31.         25.97788916  4.\n 26.         47.         33.         47.         28.         15.\n 20.         19.         27.94720616 56.         25.         33.\n 22.         28.         25.         39.         27.         19.\n 16.1939502  26.         32.        ].\nReshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mValueError\u001b[0m                                Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-23-c538acbcbb5d>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[0;32m     51\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0msklearn\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpreprocessing\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0mpreprocessing\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     52\u001b[0m \u001b[0mscaler\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mpreprocessing\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mStandardScaler\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 53\u001b[1;33m \u001b[0mage_scale_param\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mscaler\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdf\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'Age'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     54\u001b[0m \u001b[0mdf\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'Age_scaled'\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mscaler\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfit_transform\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdf\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'Age'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mage_scale_param\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     55\u001b[0m \u001b[0mfare_scale_param\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mscaler\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdf\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'Fare'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\pcApp\\Anaconda3\\lib\\site-packages\\sklearn\\preprocessing\\data.py\u001b[0m in \u001b[0;36mfit\u001b[1;34m(self, X, y)\u001b[0m\n\u001b[0;32m    588\u001b[0m         \u001b[1;31m# Reset internal state before fitting\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    589\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_reset\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 590\u001b[1;33m         \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpartial_fit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    591\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    592\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0mpartial_fit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mX\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\pcApp\\Anaconda3\\lib\\site-packages\\sklearn\\preprocessing\\data.py\u001b[0m in \u001b[0;36mpartial_fit\u001b[1;34m(self, X, y)\u001b[0m\n\u001b[0;32m    610\u001b[0m         \"\"\"\n\u001b[0;32m    611\u001b[0m         X = check_array(X, accept_sparse=('csr', 'csc'), copy=self.copy,\n\u001b[1;32m--> 612\u001b[1;33m                         warn_on_dtype=True, estimator=self, dtype=FLOAT_DTYPES)\n\u001b[0m\u001b[0;32m    613\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    614\u001b[0m         \u001b[1;31m# Even in the case of `with_mean=False`, we update the mean anyway\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\pcApp\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\validation.py\u001b[0m in \u001b[0;36mcheck_array\u001b[1;34m(array, accept_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, ensure_min_samples, ensure_min_features, warn_on_dtype, estimator)\u001b[0m\n\u001b[0;32m    439\u001b[0m                     \u001b[1;34m\"Reshape your data either using array.reshape(-1, 1) if \"\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    440\u001b[0m                     \u001b[1;34m\"your data has a single feature or array.reshape(1, -1) \"\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 441\u001b[1;33m                     \"if it contains a single sample.\".format(array))\n\u001b[0m\u001b[0;32m    442\u001b[0m             \u001b[0marray\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0matleast_2d\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marray\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    443\u001b[0m             \u001b[1;31m# To ensure that array flags are maintained\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mValueError\u001b[0m: Expected 2D array, got 1D array instead:\narray=[22.         38.         26.         35.         35.         23.83895259\n 54.          2.         27.         14.          4.         58.\n 20.         39.         14.         55.          2.         32.06649305\n 31.         29.51820514 35.         34.         15.         28.\n  8.         38.         29.51820514 19.         22.38011324 27.94720616\n 40.         36.10804822 35.2958243  66.         28.         42.\n 22.87630686 21.         18.         14.         40.         27.\n 27.94720616  3.         19.         30.70572678 33.12898535 35.2958243\n 23.45968333 18.          7.         21.         49.         29.\n 65.         44.06483036 21.         28.5         5.         11.\n 22.         38.         45.          4.         41.20008848 17.09991595\n 29.         19.         17.         26.         32.         16.\n 21.         26.         32.         25.         27.94720616 30.70572678\n  0.83       30.         22.         29.         23.32262739 28.\n 17.         33.         16.         30.70572678 23.         24.\n 29.         20.         46.         26.         59.         30.70572678\n 71.         23.         34.         34.         28.         27.94720616\n 21.         33.         37.         28.         21.         27.51545426\n 38.         33.55117591 47.         14.5        22.         20.\n 17.         21.         70.5        29.         24.          2.\n 21.         30.70572678 32.5        32.5        54.         12.\n 35.2958243  24.         25.78337698 45.         33.         20.\n 47.         29.         25.         23.         19.         37.\n 16.         24.         25.34409583 22.         24.         19.\n 18.         19.         27.          9.         36.5        42.\n 51.         22.         55.5        40.5        29.78279613 51.\n 16.         30.         25.52340334 10.86986696 44.         40.\n 26.         17.          1.          9.         26.03188214 45.\n 49.5542756  28.         61.          4.          1.         21.\n 56.         18.          7.30954704 50.         30.         36.\n 10.86986696 31.71894048  9.          1.          4.         46.24976824\n 33.12898535 45.         40.         36.         32.         19.\n 19.          3.         44.         58.         35.2958243  42.\n 35.2958243  24.         28.         10.86986696 34.         45.5\n 18.          2.         32.         26.         16.         40.\n 24.         35.         22.         30.         31.09342985 31.\n 27.         42.         32.         30.         16.         27.\n 51.         27.94720616 38.         22.         19.         20.5\n 18.          7.30954704 35.         29.         59.          5.\n 24.         31.10838452 44.          8.         19.         33.\n 20.80015413 33.12898535 29.         22.         30.         44.\n 25.         24.         37.         54.         29.78279613 29.\n 62.         30.         41.         29.         34.62028571 30.\n 35.         50.         35.2958243   3.         52.         40.\n 35.2958243  36.         16.         25.         58.         35.\n 36.87489821 25.         41.         37.         35.2958243  63.\n 45.         35.05181757  7.         35.         65.         28.\n 16.         19.         57.74249226 33.         30.         22.\n 42.         22.         26.         19.         36.         24.\n 24.         41.20008848 23.5         2.         41.57487718 50.\n 35.2958243  23.31368333 19.         42.57451554 30.70572678  0.92\n 28.57888393 17.         30.         30.         24.         18.\n 26.         28.         43.         26.         24.         54.\n 31.         40.         22.         27.         30.         22.\n 10.86986696 36.         61.         36.         31.         16.\n 23.31368333 45.5        38.         16.         31.42587794 27.94720616\n 29.         41.         45.         45.          2.         24.\n 28.         25.         36.         24.         40.         26.68916849\n  3.         42.         23.         59.96916448 15.         25.\n 29.51820514 28.         22.         38.         22.38011324 22.38011324\n 40.         29.         45.         35.         33.12898535 30.\n 60.         22.87630686 35.2958243  24.         25.         18.\n 19.         22.          3.         31.94479345 22.         27.\n 20.         19.         42.          1.         32.         35.\n 27.94720616 18.          1.         36.         19.89558113 17.\n 36.         21.         28.         23.         24.         22.\n 31.         46.         23.         28.         39.         26.\n 21.         28.         20.         34.         51.          3.\n 21.          7.30954704 27.94720616 20.68131488 33.         35.05181757\n 44.         30.70572678 34.         18.         30.         10.\n 27.94720616 21.         29.         28.         18.         29.78279613\n 28.         19.         35.2958243  32.         28.         26.68916849\n 42.         17.         50.         14.         21.         24.\n 64.         31.         45.         20.         25.         28.\n 23.47643239  4.         13.         34.          5.         52.\n 36.         24.10899881 30.         49.         30.70572678 29.\n 65.         44.06001827 50.         35.2958243  48.         34.\n 47.         48.         30.70572678 38.         35.05181757 56.\n 19.89558113  0.75       29.78279613 38.         33.         23.\n 22.         44.65953056 34.         29.         22.          2.\n  9.         35.05181757 50.         63.         25.          7.30954704\n 35.         58.         30.          9.         24.10899881 21.\n 55.         71.         21.         18.19479484 54.         25.7554753\n 25.         24.         17.         21.         26.82073281 37.\n 16.         18.         33.         49.8994093  28.         26.\n 29.         30.70572678 36.         54.         24.         47.\n 34.         34.17374861 36.         32.         30.         22.\n 29.51820514 44.         22.87630686 40.5        50.         38.5155\n 39.         23.          2.         22.87630686 17.          8.01370298\n 30.          7.         45.         30.         24.33021696 22.\n 36.          9.         11.         32.         50.         64.\n 19.         32.79502428 33.          8.         17.         27.\n 26.3814249  22.         22.         62.         48.         38.5155\n 39.         36.         35.2958243  40.         28.         30.70572678\n 30.70572678 24.         19.         29.         22.87630686 32.\n 62.         53.         36.         35.2958243  16.         19.\n 34.         39.         20.07016773 32.         25.         39.\n 54.         36.         29.04293865 18.         47.         60.\n 22.         30.70572678 35.         52.         47.         27.45639428\n 37.         36.         24.40235514 49.         29.51820514 49.\n 24.         27.94720616 37.51615833 44.         35.         36.\n 30.         27.         22.         40.         39.         27.86873699\n 33.12898535 35.2958243  35.         24.         34.         26.\n  4.         26.         27.         42.         20.         21.\n 21.         61.         57.         21.         26.         19.89558113\n 80.         51.         32.         38.83477484  9.         28.\n 32.         31.         41.         26.68916849 20.         24.\n  2.         29.56889809  0.75       48.         19.         56.\n 31.10838452 23.         27.94720616 18.         21.         26.3814249\n 18.         24.         27.94720616 32.         23.         58.\n 50.         40.         47.         36.         20.         32.\n 25.         27.51545426 43.         39.08817814 40.         31.\n 70.         31.         35.05181757 18.         24.5        18.\n 43.         36.         23.47643239 27.         20.         14.\n 60.         25.         14.         19.         18.         15.\n 31.          4.         29.56889809 25.         60.         52.\n 44.         19.89558113 49.         42.         18.         35.\n 18.         25.         26.         39.         45.         42.\n 22.         17.09991595 24.         49.8994093  48.         29.\n 52.         19.         38.         27.         27.30887391 33.\n  6.         17.         34.         50.         27.         20.\n 30.         19.89558113 25.         25.         29.         11.\n 35.05181757 23.         23.         28.5        48.         35.\n 27.94720616 27.94720616 38.42663175 36.         21.         24.\n 31.         70.         16.         30.         19.         31.\n  4.          6.         33.         23.         48.          0.67\n 28.         18.         34.         33.         24.33021696 41.\n 20.         36.         16.         51.         39.17490238 30.5\n 33.55117591 32.         24.         48.         57.         29.51820514\n 54.         18.         35.2958243   5.         19.89558113 43.\n 13.         17.         29.         16.1939502  25.         25.\n 18.          8.          1.         46.         35.2958243  16.\n 10.86986696 50.38328427 25.         39.         49.         31.\n 30.         30.         34.         31.         11.          0.42\n 27.         31.         39.         18.         39.         33.\n 26.         39.         35.          6.         30.5        38.83477484\n 23.         31.         43.         10.         52.         27.\n 38.         27.          2.         35.09787898 29.56889809  1.\n 35.2958243  62.         15.          0.83       22.87630686 23.\n 18.         39.         21.         30.70572678 32.         50.91095013\n 20.         16.         30.         34.5        17.         42.\n 10.86986696 35.         28.         43.96476448  4.         74.\n  9.         16.         44.         18.         45.         51.\n 24.         22.87630686 41.         21.         48.         10.86986696\n 24.         42.         27.         31.         25.97788916  4.\n 26.         47.         33.         47.         28.         15.\n 20.         19.         27.94720616 56.         25.         33.\n 22.         28.         25.         39.         27.         19.\n 16.1939502  26.         32.        ].\nReshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample."
     ]
    }
   ],
   "source": [
    "data_train = pd.read_csv(\"Train.csv\")\n",
    "data_train['Sex_Pclass'] = data_train.Sex + \"_\" + data_train.Pclass.map(str)\n",
    "\n",
    "from sklearn.ensemble import RandomForestRegressor\n",
    " \n",
    "### 使用 RandomForestClassifier 填补缺失的年龄属性\n",
    "def set_missing_ages(df):\n",
    "    \n",
    "    # 把已有的数值型特征取出来丢进Random Forest Regressor中\n",
    "    age_df = df[['Age','Fare', 'Parch', 'SibSp', 'Pclass']]\n",
    "\n",
    "    # 乘客分成已知年龄和未知年龄两部分\n",
    "    known_age = age_df[age_df.Age.notnull()].as_matrix()\n",
    "    unknown_age = age_df[age_df.Age.isnull()].as_matrix()\n",
    "\n",
    "    # y即目标年龄\n",
    "    y = known_age[:, 0]\n",
    "\n",
    "    # X即特征属性值\n",
    "    X = known_age[:, 1:]\n",
    "\n",
    "    # fit到RandomForestRegressor之中\n",
    "    rfr = RandomForestRegressor(random_state=0, n_estimators=2000, n_jobs=-1)\n",
    "    rfr.fit(X, y)\n",
    "    \n",
    "    # 用得到的模型进行未知年龄结果预测\n",
    "    predictedAges = rfr.predict(unknown_age[:, 1::])\n",
    "    \n",
    "    # 用得到的预测结果填补原缺失数据\n",
    "    df.loc[ (df.Age.isnull()), 'Age' ] = predictedAges \n",
    "    \n",
    "    return df, rfr\n",
    "\n",
    "def set_Cabin_type(df):\n",
    "    df.loc[ (df.Cabin.notnull()), 'Cabin' ] = \"Yes\"\n",
    "    df.loc[ (df.Cabin.isnull()), 'Cabin' ] = \"No\"\n",
    "    return df\n",
    "\n",
    "data_train, rfr = set_missing_ages(data_train)\n",
    "data_train = set_Cabin_type(data_train)\n",
    "\n",
    "dummies_Cabin = pd.get_dummies(data_train['Cabin'], prefix= 'Cabin')\n",
    "dummies_Embarked = pd.get_dummies(data_train['Embarked'], prefix= 'Embarked')\n",
    "dummies_Sex = pd.get_dummies(data_train['Sex'], prefix= 'Sex')\n",
    "dummies_Pclass = pd.get_dummies(data_train['Pclass'], prefix= 'Pclass')\n",
    "dummies_Sex_Pclass = pd.get_dummies(data_train['Sex_Pclass'], prefix= 'Sex_Pclass')\n",
    "\n",
    "\n",
    "df = pd.concat([data_train, dummies_Cabin, dummies_Embarked, dummies_Sex, dummies_Pclass, dummies_Sex_Pclass], axis=1)\n",
    "df.drop(['Pclass', 'Name', 'Sex', 'Ticket', 'Cabin', 'Embarked', 'Sex_Pclass'], axis=1, inplace=True)\n",
    "import sklearn.preprocessing as preprocessing\n",
    "scaler = preprocessing.StandardScaler()\n",
    "age_scale_param = scaler.fit(df['Age'])\n",
    "df['Age_scaled'] = scaler.fit_transform(df['Age'], age_scale_param)\n",
    "fare_scale_param = scaler.fit(df['Fare'])\n",
    "df['Fare_scaled'] = scaler.fit_transform(df['Fare'], fare_scale_param)\n",
    "\n",
    "from sklearn import linear_model\n",
    "\n",
    "train_df = df.filter(regex='Survived|Age_.*|SibSp|Parch|Fare_.*|Cabin_.*|Embarked_.*|Sex_.*|Pclass.*')\n",
    "train_np = train_df.as_matrix()\n",
    "\n",
    "# y即Survival结果\n",
    "y = train_np[:, 0]\n",
    "\n",
    "# X即特征属性值\n",
    "X = train_np[:, 1:]\n",
    "\n",
    "# fit到RandomForestRegressor之中\n",
    "clf = linear_model.LogisticRegression(C=1.0, penalty='l1', tol=1e-6)\n",
    "clf.fit(X, y)\n",
    "clf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\pcApp\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:7: FutureWarning: Method .as_matrix will be removed in a future version. Use .values instead.\n",
      "  import sys\n"
     ]
    },
    {
     "ename": "NameError",
     "evalue": "name 'age_scale_param' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-24-b117630b0268>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[0;32m     21\u001b[0m \u001b[0mdf_test\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mconcat\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mdata_test\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdummies_Cabin\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdummies_Embarked\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdummies_Sex\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdummies_Pclass\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdummies_Sex_Pclass\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     22\u001b[0m \u001b[0mdf_test\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdrop\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'Pclass'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'Name'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'Sex'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'Ticket'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'Cabin'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'Embarked'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'Sex_Pclass'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0minplace\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mTrue\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 23\u001b[1;33m \u001b[0mdf_test\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'Age_scaled'\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mscaler\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfit_transform\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdf_test\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'Age'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mage_scale_param\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     24\u001b[0m \u001b[0mdf_test\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'Fare_scaled'\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mscaler\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfit_transform\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdf_test\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'Fare'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfare_scale_param\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     25\u001b[0m \u001b[0mdf_test\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mNameError\u001b[0m: name 'age_scale_param' is not defined"
     ]
    }
   ],
   "source": [
    "data_test = pd.read_csv(\"test.csv\")\n",
    "data_test.loc[ (data_test.Fare.isnull()), 'Fare' ] = 0\n",
    "data_test['Sex_Pclass'] = data_test.Sex + \"_\" + data_test.Pclass.map(str)\n",
    "# 接着我们对test_data做和train_data中一致的特征变换\n",
    "# 首先用同样的RandomForestRegressor模型填上丢失的年龄\n",
    "tmp_df = data_test[['Age','Fare', 'Parch', 'SibSp', 'Pclass']]\n",
    "null_age = tmp_df[data_test.Age.isnull()].as_matrix()\n",
    "# 根据特征属性X预测年龄并补上\n",
    "X = null_age[:, 1:]\n",
    "predictedAges = rfr.predict(X)\n",
    "data_test.loc[ (data_test.Age.isnull()), 'Age' ] = predictedAges\n",
    "\n",
    "data_test = set_Cabin_type(data_test)\n",
    "dummies_Cabin = pd.get_dummies(data_test['Cabin'], prefix= 'Cabin')\n",
    "dummies_Embarked = pd.get_dummies(data_test['Embarked'], prefix= 'Embarked')\n",
    "dummies_Sex = pd.get_dummies(data_test['Sex'], prefix= 'Sex')\n",
    "dummies_Pclass = pd.get_dummies(data_test['Pclass'], prefix= 'Pclass')\n",
    "dummies_Sex_Pclass = pd.get_dummies(data_test['Sex_Pclass'], prefix= 'Sex_Pclass')\n",
    "\n",
    "\n",
    "df_test = pd.concat([data_test, dummies_Cabin, dummies_Embarked, dummies_Sex, dummies_Pclass, dummies_Sex_Pclass], axis=1)\n",
    "df_test.drop(['Pclass', 'Name', 'Sex', 'Ticket', 'Cabin', 'Embarked', 'Sex_Pclass'], axis=1, inplace=True)\n",
    "df_test['Age_scaled'] = scaler.fit_transform(df_test['Age'], age_scale_param)\n",
    "df_test['Fare_scaled'] = scaler.fit_transform(df_test['Fare'], fare_scale_param)\n",
    "df_test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 545,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "test = df_test.filter(regex='Age_.*|SibSp|Parch|Fare_.*|Cabin_.*|Embarked_.*|Sex_.*|Pclass.*')\n",
    "predictions = clf.predict(test)\n",
    "result = pd.DataFrame({'PassengerId':data_test['PassengerId'].as_matrix(), 'Survived':predictions.astype(np.int32)})\n",
    "result.to_csv(\"logistic_regression_predictions2.csv\", index=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font color=red>一般做到后期，咱们要进行模型优化的方法就是模型融合啦<br>\n",
    "先解释解释啥叫模型融合哈，我们还是举几个例子直观理解一下好了。<br><br>\n",
    "\n",
    "大家都看过知识问答的综艺节目中，求助现场观众时候，让观众投票，最高的答案作为自己的答案的形式吧，每个人都有一个判定结果，最后我们相信答案在大多数人手里。<br>\n",
    "\n",
    "再通俗一点举个例子。你和你班某数学大神关系好，每次作业都『模仿』他的，于是绝大多数情况下，他做对了，你也对了。突然某一天大神脑子犯糊涂，手一抖，写错了一个数，于是…恩，你也只能跟着错了。 <br>\n",
    "我们再来看看另外一个场景，你和你班5个数学大神关系都很好，每次都把他们作业拿过来，对比一下，再『自己做』，那你想想，如果哪天某大神犯糊涂了，写错了，but另外四个写对了啊，那你肯定相信另外4人的是正确答案吧？<br>\n",
    "\n",
    "最简单的模型融合大概就是这么个意思，比如分类问题，当我们手头上有一堆在同一份数据集上训练得到的分类器(比如logistic regression，SVM，KNN，random forest，神经网络)，那我们让他们都分别去做判定，然后对结果做投票统计，取票数最多的结果为最后结果。<br>\n",
    "\n",
    "bingo，问题就这么完美的解决了。<br>\n",
    "\n",
    "模型融合可以比较好地缓解，训练过程中产生的过拟合问题，从而对于结果的准确度提升有一定的帮助。<br>\n",
    "\n",
    "话说回来，回到我们现在的问题。你看，我们现在只讲了logistic regression，如果我们还想用这个融合思想去提高我们的结果，我们该怎么做呢？<br>\n",
    "\n",
    "既然这个时候模型没得选，那咱们就在数据上动动手脚咯。大家想想，如果模型出现过拟合现在，一定是在我们的训练上出现拟合过度造成的对吧。<br>\n",
    "\n",
    "那我们干脆就不要用全部的训练集，每次取训练集的一个subset，做训练，这样，我们虽然用的是同一个机器学习算法，但是得到的模型却是不一样的；同时，因为我们没有任何一份子数据集是全的，因此即使出现过拟合，也是在子训练集上出现过拟合，而不是全体数据上，这样做一个融合，可能对最后的结果有一定的帮助。对，这就是常用的Bagging。<br>\n",
    "\n",
    "我们用scikit-learn里面的Bagging来完成上面的思路，过程非常简单。代码如下：<br><br><font>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\pcApp\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:4: FutureWarning: Method .as_matrix will be removed in a future version. Use .values instead.\n",
      "  after removing the cwd from sys.path.\n",
      "D:\\pcApp\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:19: FutureWarning: Method .as_matrix will be removed in a future version. Use .values instead.\n"
     ]
    },
    {
     "ename": "FileNotFoundError",
     "evalue": "[Errno 2] No such file or directory: '/Users/MLS/Downloads/logistic_regression_predictions2.csv'",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mFileNotFoundError\u001b[0m                         Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-25-e79129c3aaff>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[0;32m     18\u001b[0m \u001b[0mpredictions\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mbagging_clf\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpredict\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtest\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     19\u001b[0m \u001b[0mresult\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mDataFrame\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m{\u001b[0m\u001b[1;34m'PassengerId'\u001b[0m\u001b[1;33m:\u001b[0m\u001b[0mdata_test\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'PassengerId'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mas_matrix\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'Survived'\u001b[0m\u001b[1;33m:\u001b[0m\u001b[0mpredictions\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mastype\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mint32\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 20\u001b[1;33m \u001b[0mresult\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mto_csv\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"/Users/MLS/Downloads/logistic_regression_predictions2.csv\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mindex\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mFalse\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[1;32mD:\\pcApp\\Anaconda3\\lib\\site-packages\\pandas\\core\\frame.py\u001b[0m in \u001b[0;36mto_csv\u001b[1;34m(self, path_or_buf, sep, na_rep, float_format, columns, header, index, index_label, mode, encoding, compression, quoting, quotechar, line_terminator, chunksize, tupleize_cols, date_format, doublequote, escapechar, decimal)\u001b[0m\n\u001b[0;32m   1743\u001b[0m                                  \u001b[0mdoublequote\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mdoublequote\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1744\u001b[0m                                  escapechar=escapechar, decimal=decimal)\n\u001b[1;32m-> 1745\u001b[1;33m         \u001b[0mformatter\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msave\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   1746\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1747\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mpath_or_buf\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\pcApp\\Anaconda3\\lib\\site-packages\\pandas\\io\\formats\\csvs.py\u001b[0m in \u001b[0;36msave\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m    134\u001b[0m             f, handles = _get_handle(self.path_or_buf, self.mode,\n\u001b[0;32m    135\u001b[0m                                      \u001b[0mencoding\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mencoding\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 136\u001b[1;33m                                      compression=None)\n\u001b[0m\u001b[0;32m    137\u001b[0m             \u001b[0mclose\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mTrue\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcompression\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mNone\u001b[0m \u001b[1;32melse\u001b[0m \u001b[1;32mFalse\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    138\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\pcApp\\Anaconda3\\lib\\site-packages\\pandas\\io\\common.py\u001b[0m in \u001b[0;36m_get_handle\u001b[1;34m(path_or_buf, mode, encoding, compression, memory_map, is_text)\u001b[0m\n\u001b[0;32m    398\u001b[0m         \u001b[1;32melif\u001b[0m \u001b[0mencoding\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    399\u001b[0m             \u001b[1;31m# Python 3 and encoding\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 400\u001b[1;33m             \u001b[0mf\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mopen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mpath_or_buf\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmode\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mencoding\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mencoding\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    401\u001b[0m         \u001b[1;32melif\u001b[0m \u001b[0mis_text\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    402\u001b[0m             \u001b[1;31m# Python 3 and no explicit encoding\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: '/Users/MLS/Downloads/logistic_regression_predictions2.csv'"
     ]
    }
   ],
   "source": [
    "from sklearn.ensemble import BaggingRegressor\n",
    "\n",
    "train_df = df.filter(regex='Survived|Age_.*|SibSp|Parch|Fare_.*|Cabin_.*|Embarked_.*|Sex_.*|Pclass.*|Mother|Child|Family|Title')\n",
    "train_np = train_df.as_matrix()\n",
    "\n",
    "# y即Survival结果\n",
    "y = train_np[:, 0]\n",
    "\n",
    "# X即特征属性值\n",
    "X = train_np[:, 1:]\n",
    "\n",
    "# fit到BaggingRegressor之中\n",
    "clf = linear_model.LogisticRegression(C=1.0, penalty='l1', tol=1e-6)\n",
    "bagging_clf = BaggingRegressor(clf, n_estimators=10, max_samples=0.8, max_features=1.0, bootstrap=True, bootstrap_features=False, n_jobs=-1)\n",
    "bagging_clf.fit(X, y)\n",
    "\n",
    "test = df_test.filter(regex='Age_.*|SibSp|Parch|Fare_.*|Cabin_.*|Embarked_.*|Sex_.*|Pclass.*|Mother|Child|Family|Title')\n",
    "predictions = bagging_clf.predict(test)\n",
    "result = pd.DataFrame({'PassengerId':data_test['PassengerId'].as_matrix(), 'Survived':predictions.astype(np.int32)})\n",
    "result.to_csv(\"/Users/MLS/Downloads/logistic_regression_predictions2.csv\", index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font color=red>下面是咱们用别的分类器解决这个问题的代码：</font>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 581,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "/Users/MLS/Downloads/train.csv 0\n",
      "(891,) (891, 12)\n",
      "Fitting 10 folds for each of 1 candidates, totalling 10 fits\n",
      "[CV]  ................................................................\n",
      "[CV] ....................................... , score=0.860140 -   0.4s\n",
      "[CV]  ................................................................\n",
      "[CV] ....................................... , score=0.832168 -   0.4s\n",
      "[CV]  ................................................................\n",
      "[CV] ....................................... , score=0.818182 -   0.4s\n",
      "[CV]  ................................................................\n",
      "[CV] ....................................... , score=0.839161 -   0.4s\n",
      "[CV]  ................................................................\n",
      "[CV] ....................................... , score=0.811189 -   0.5s\n",
      "[CV]  ................................................................\n",
      "[CV] ....................................... , score=0.874126 -   0.4s\n",
      "[CV]  ................................................................\n",
      "[CV] ....................................... , score=0.811189 -   0.4s\n",
      "[CV]  ................................................................\n",
      "[CV] ....................................... , score=0.783217 -   0.4s\n",
      "[CV]  ................................................................\n",
      "[CV] ....................................... , score=0.825175 -   0.4s\n",
      "[CV]  ................................................................\n",
      "[CV] ....................................... , score=0.839161 -   0.4s"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[Parallel(n_jobs=1)]: Done   1 jobs       | elapsed:    0.4s\n",
      "[Parallel(n_jobs=1)]: Done  10 out of  10 | elapsed:    4.1s finished\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Best score: 0.829\n",
      "Pipeline(steps=[('clf', RandomForestClassifier(bootstrap=False, class_weight=None,\n",
      "            criterion='entropy', max_depth=5, max_features='auto',\n",
      "            max_leaf_nodes=None, min_samples_leaf=1, min_samples_split=1,\n",
      "            min_weight_fraction_leaf=0.0, n_estimators=500, n_jobs=1,\n",
      "            oob_score=False, random_state=0, verbose=0, warm_start=False))])\n",
      "Model with rank: 1\n",
      "Mean validation score: 0.829 (std: 0.025)\n",
      "Parameters: {}\n",
      "\n",
      "-----grid search end------------\n",
      "on all train set\n",
      "0.826038159371 [ 0.81144781  0.83501684  0.83164983]\n",
      "on test set\n",
      "0.782203389831 [ 0.76666667  0.78333333  0.79661017]\n",
      "             precision    recall  f1-score   support\n",
      "\n",
      "        0.0       0.86      0.90      0.88       439\n",
      "        1.0       0.83      0.75      0.79       273\n",
      "\n",
      "avg / total       0.85      0.85      0.85       712\n",
      "\n",
      "test data\n",
      "             precision    recall  f1-score   support\n",
      "\n",
      "        0.0       0.86      0.87      0.86       110\n",
      "        1.0       0.79      0.77      0.78        69\n",
      "\n",
      "avg / total       0.83      0.83      0.83       179\n",
      "\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "['/Users/MLS/Downloads/model-rf.pkl',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_01.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_02.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_03.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_04.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_05.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_06.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_07.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_08.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_09.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_10.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_11.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_12.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_13.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_14.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_15.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_16.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_17.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_18.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_19.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_20.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_21.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_22.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_23.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_24.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_25.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_26.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_27.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_28.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_29.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_30.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_31.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_32.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_33.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_34.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_35.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_36.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_37.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_38.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_39.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_40.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_41.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_42.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_43.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_44.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_45.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_46.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_47.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_48.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_49.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_50.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_51.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_52.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_53.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_54.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_55.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_56.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_57.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_58.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_59.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_60.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_61.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_62.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_63.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_64.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_65.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_66.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_67.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_68.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_69.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_70.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_71.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_72.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_73.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_74.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_75.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_76.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_77.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_78.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_79.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_80.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_81.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_82.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_83.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_84.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_85.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_86.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_87.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_88.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_89.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_90.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_91.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_92.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_93.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_94.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_95.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_96.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_97.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_98.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_99.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_100.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_101.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_102.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_103.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_104.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_105.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_106.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_107.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_108.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_109.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_110.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_111.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_112.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_113.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_114.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_115.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_116.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_117.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_118.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_119.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_120.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_121.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_122.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_123.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_124.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_125.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_126.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_127.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_128.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_129.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_130.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_131.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_132.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_133.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_134.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_135.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_136.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_137.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_138.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_139.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_140.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_141.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_142.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_143.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_144.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_145.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_146.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_147.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_148.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_149.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_150.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_151.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_152.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_153.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_154.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_155.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_156.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_157.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_158.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_159.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_160.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_161.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_162.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_163.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_164.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_165.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_166.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_167.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_168.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_169.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_170.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_171.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_172.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_173.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_174.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_175.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_176.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_177.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_178.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_179.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_180.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_181.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_182.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_183.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_184.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_185.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_186.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_187.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_188.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_189.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_190.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_191.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_192.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_193.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_194.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_195.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_196.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_197.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_198.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_199.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_200.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_201.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_202.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_203.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_204.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_205.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_206.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_207.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_208.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_209.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_210.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_211.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_212.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_213.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_214.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_215.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_216.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_217.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_218.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_219.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_220.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_221.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_222.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_223.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_224.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_225.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_226.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_227.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_228.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_229.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_230.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_231.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_232.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_233.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_234.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_235.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_236.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_237.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_238.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_239.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_240.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_241.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_242.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_243.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_244.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_245.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_246.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_247.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_248.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_249.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_250.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_251.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_252.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_253.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_254.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_255.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_256.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_257.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_258.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_259.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_260.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_261.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_262.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_263.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_264.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_265.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_266.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_267.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_268.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_269.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_270.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_271.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_272.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_273.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_274.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_275.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_276.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_277.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_278.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_279.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_280.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_281.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_282.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_283.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_284.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_285.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_286.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_287.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_288.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_289.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_290.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_291.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_292.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_293.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_294.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_295.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_296.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_297.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_298.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_299.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_300.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_301.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_302.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_303.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_304.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_305.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_306.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_307.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_308.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_309.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_310.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_311.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_312.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_313.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_314.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_315.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_316.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_317.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_318.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_319.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_320.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_321.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_322.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_323.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_324.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_325.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_326.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_327.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_328.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_329.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_330.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_331.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_332.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_333.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_334.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_335.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_336.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_337.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_338.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_339.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_340.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_341.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_342.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_343.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_344.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_345.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_346.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_347.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_348.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_349.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_350.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_351.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_352.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_353.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_354.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_355.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_356.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_357.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_358.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_359.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_360.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_361.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_362.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_363.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_364.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_365.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_366.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_367.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_368.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_369.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_370.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_371.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_372.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_373.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_374.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_375.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_376.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_377.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_378.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_379.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_380.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_381.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_382.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_383.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_384.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_385.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_386.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_387.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_388.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_389.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_390.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_391.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_392.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_393.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_394.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_395.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_396.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_397.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_398.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_399.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_400.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_401.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_402.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_403.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_404.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_405.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_406.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_407.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_408.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_409.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_410.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_411.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_412.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_413.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_414.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_415.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_416.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_417.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_418.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_419.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_420.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_421.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_422.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_423.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_424.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_425.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_426.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_427.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_428.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_429.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_430.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_431.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_432.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_433.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_434.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_435.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_436.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_437.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_438.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_439.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_440.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_441.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_442.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_443.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_444.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_445.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_446.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_447.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_448.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_449.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_450.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_451.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_452.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_453.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_454.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_455.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_456.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_457.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_458.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_459.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_460.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_461.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_462.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_463.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_464.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_465.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_466.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_467.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_468.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_469.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_470.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_471.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_472.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_473.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_474.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_475.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_476.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_477.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_478.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_479.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_480.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_481.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_482.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_483.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_484.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_485.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_486.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_487.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_488.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_489.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_490.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_491.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_492.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_493.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_494.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_495.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_496.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_497.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_498.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_499.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_500.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_501.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_502.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_503.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_504.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_505.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_506.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_507.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_508.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_509.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_510.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_511.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_512.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_513.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_514.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_515.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_516.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_517.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_518.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_519.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_520.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_521.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_522.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_523.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_524.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_525.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_526.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_527.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_528.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_529.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_530.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_531.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_532.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_533.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_534.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_535.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_536.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_537.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_538.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_539.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_540.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_541.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_542.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_543.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_544.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_545.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_546.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_547.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_548.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_549.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_550.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_551.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_552.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_553.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_554.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_555.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_556.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_557.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_558.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_559.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_560.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_561.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_562.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_563.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_564.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_565.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_566.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_567.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_568.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_569.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_570.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_571.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_572.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_573.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_574.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_575.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_576.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_577.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_578.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_579.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_580.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_581.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_582.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_583.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_584.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_585.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_586.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_587.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_588.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_589.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_590.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_591.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_592.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_593.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_594.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_595.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_596.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_597.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_598.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_599.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_600.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_601.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_602.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_603.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_604.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_605.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_606.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_607.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_608.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_609.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_610.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_611.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_612.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_613.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_614.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_615.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_616.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_617.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_618.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_619.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_620.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_621.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_622.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_623.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_624.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_625.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_626.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_627.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_628.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_629.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_630.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_631.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_632.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_633.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_634.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_635.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_636.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_637.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_638.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_639.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_640.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_641.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_642.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_643.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_644.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_645.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_646.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_647.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_648.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_649.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_650.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_651.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_652.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_653.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_654.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_655.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_656.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_657.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_658.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_659.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_660.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_661.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_662.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_663.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_664.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_665.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_666.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_667.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_668.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_669.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_670.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_671.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_672.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_673.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_674.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_675.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_676.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_677.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_678.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_679.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_680.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_681.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_682.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_683.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_684.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_685.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_686.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_687.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_688.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_689.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_690.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_691.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_692.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_693.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_694.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_695.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_696.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_697.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_698.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_699.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_700.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_701.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_702.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_703.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_704.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_705.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_706.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_707.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_708.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_709.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_710.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_711.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_712.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_713.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_714.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_715.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_716.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_717.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_718.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_719.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_720.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_721.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_722.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_723.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_724.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_725.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_726.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_727.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_728.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_729.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_730.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_731.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_732.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_733.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_734.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_735.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_736.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_737.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_738.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_739.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_740.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_741.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_742.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_743.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_744.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_745.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_746.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_747.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_748.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_749.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_750.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_751.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_752.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_753.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_754.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_755.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_756.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_757.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_758.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_759.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_760.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_761.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_762.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_763.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_764.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_765.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_766.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_767.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_768.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_769.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_770.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_771.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_772.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_773.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_774.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_775.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_776.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_777.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_778.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_779.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_780.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_781.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_782.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_783.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_784.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_785.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_786.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_787.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_788.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_789.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_790.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_791.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_792.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_793.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_794.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_795.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_796.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_797.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_798.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_799.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_800.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_801.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_802.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_803.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_804.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_805.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_806.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_807.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_808.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_809.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_810.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_811.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_812.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_813.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_814.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_815.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_816.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_817.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_818.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_819.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_820.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_821.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_822.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_823.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_824.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_825.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_826.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_827.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_828.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_829.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_830.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_831.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_832.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_833.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_834.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_835.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_836.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_837.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_838.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_839.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_840.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_841.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_842.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_843.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_844.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_845.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_846.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_847.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_848.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_849.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_850.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_851.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_852.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_853.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_854.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_855.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_856.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_857.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_858.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_859.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_860.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_861.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_862.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_863.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_864.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_865.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_866.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_867.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_868.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_869.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_870.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_871.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_872.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_873.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_874.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_875.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_876.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_877.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_878.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_879.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_880.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_881.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_882.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_883.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_884.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_885.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_886.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_887.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_888.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_889.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_890.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_891.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_892.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_893.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_894.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_895.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_896.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_897.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_898.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_899.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_900.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_901.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_902.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_903.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_904.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_905.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_906.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_907.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_908.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_909.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_910.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_911.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_912.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_913.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_914.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_915.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_916.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_917.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_918.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_919.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_920.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_921.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_922.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_923.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_924.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_925.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_926.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_927.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_928.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_929.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_930.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_931.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_932.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_933.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_934.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_935.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_936.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_937.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_938.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_939.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_940.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_941.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_942.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_943.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_944.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_945.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_946.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_947.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_948.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_949.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_950.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_951.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_952.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_953.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_954.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_955.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_956.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_957.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_958.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_959.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_960.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_961.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_962.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_963.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_964.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_965.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_966.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_967.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_968.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_969.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_970.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_971.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_972.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_973.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_974.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_975.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_976.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_977.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_978.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_979.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_980.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_981.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_982.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_983.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_984.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_985.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_986.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_987.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_988.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_989.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_990.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_991.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_992.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_993.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_994.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_995.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_996.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_997.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_998.npy',\n",
       " '/Users/MLS/Downloads/model-rf.pkl_999.npy',\n",
       " ...]"
      ]
     },
     "execution_count": 581,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "from pandas import  DataFrame\n",
    "from patsy import dmatrices\n",
    "import string\n",
    "from operator import itemgetter\n",
    "import json\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from sklearn.cross_validation import cross_val_score\n",
    "from sklearn.pipeline import Pipeline\n",
    "from sklearn.grid_search import GridSearchCV\n",
    "from sklearn.cross_validation import train_test_split,StratifiedShuffleSplit,StratifiedKFold\n",
    "from sklearn import preprocessing\n",
    "from sklearn.metrics import classification_report\n",
    "from sklearn.externals import joblib\n",
    "\n",
    "##Read configuration parameters\n",
    "\n",
    "train_file=\"train.csv\"\n",
    "MODEL_PATH=\"./\"\n",
    "test_file=\"test.csv\"\n",
    "SUBMISSION_PATH=\"./\"\n",
    "seed= 0\n",
    "\n",
    "print train_file,seed\n",
    "\n",
    "# 输出得分\n",
    "def report(grid_scores, n_top=3):\n",
    "    top_scores = sorted(grid_scores, key=itemgetter(1), reverse=True)[:n_top]\n",
    "    for i, score in enumerate(top_scores):\n",
    "        print(\"Model with rank: {0}\".format(i + 1))\n",
    "        print(\"Mean validation score: {0:.3f} (std: {1:.3f})\".format(\n",
    "              score.mean_validation_score,\n",
    "              np.std(score.cv_validation_scores)))\n",
    "        print(\"Parameters: {0}\".format(score.parameters))\n",
    "        print(\"\")\n",
    "\n",
    "#清理和处理数据\n",
    "def substrings_in_string(big_string, substrings):\n",
    "    for substring in substrings:\n",
    "        if string.find(big_string, substring) != -1:\n",
    "            return substring\n",
    "    print big_string\n",
    "    return np.nan\n",
    "\n",
    "le = preprocessing.LabelEncoder()\n",
    "enc=preprocessing.OneHotEncoder()\n",
    "\n",
    "def clean_and_munge_data(df):\n",
    "    #处理缺省值\n",
    "    df.Fare = df.Fare.map(lambda x: np.nan if x==0 else x)\n",
    "    #处理一下名字，生成Title字段\n",
    "    title_list=['Mrs', 'Mr', 'Master', 'Miss', 'Major', 'Rev',\n",
    "                'Dr', 'Ms', 'Mlle','Col', 'Capt', 'Mme', 'Countess',\n",
    "                'Don', 'Jonkheer']\n",
    "    df['Title']=df['Name'].map(lambda x: substrings_in_string(x, title_list))\n",
    "\n",
    "    #处理特殊的称呼，全处理成mr, mrs, miss, master\n",
    "    def replace_titles(x):\n",
    "        title=x['Title']\n",
    "        if title in ['Mr','Don', 'Major', 'Capt', 'Jonkheer', 'Rev', 'Col']:\n",
    "            return 'Mr'\n",
    "        elif title in ['Master']:\n",
    "            return 'Master'\n",
    "        elif title in ['Countess', 'Mme','Mrs']:\n",
    "            return 'Mrs'\n",
    "        elif title in ['Mlle', 'Ms','Miss']:\n",
    "            return 'Miss'\n",
    "        elif title =='Dr':\n",
    "            if x['Sex']=='Male':\n",
    "                return 'Mr'\n",
    "            else:\n",
    "                return 'Mrs'\n",
    "        elif title =='':\n",
    "            if x['Sex']=='Male':\n",
    "                return 'Master'\n",
    "            else:\n",
    "                return 'Miss'\n",
    "        else:\n",
    "            return title\n",
    "\n",
    "    df['Title']=df.apply(replace_titles, axis=1)\n",
    "\n",
    "    #看看家族是否够大，咳咳\n",
    "    df['Family_Size']=df['SibSp']+df['Parch']\n",
    "    df['Family']=df['SibSp']*df['Parch']\n",
    "\n",
    "\n",
    "    df.loc[ (df.Fare.isnull())&(df.Pclass==1),'Fare'] =np.median(df[df['Pclass'] == 1]['Fare'].dropna())\n",
    "    df.loc[ (df.Fare.isnull())&(df.Pclass==2),'Fare'] =np.median( df[df['Pclass'] == 2]['Fare'].dropna())\n",
    "    df.loc[ (df.Fare.isnull())&(df.Pclass==3),'Fare'] = np.median(df[df['Pclass'] == 3]['Fare'].dropna())\n",
    "\n",
    "    df['Gender'] = df['Sex'].map( {'female': 0, 'male': 1} ).astype(int)\n",
    "\n",
    "    df['AgeFill']=df['Age']\n",
    "    mean_ages = np.zeros(4)\n",
    "    mean_ages[0]=np.average(df[df['Title'] == 'Miss']['Age'].dropna())\n",
    "    mean_ages[1]=np.average(df[df['Title'] == 'Mrs']['Age'].dropna())\n",
    "    mean_ages[2]=np.average(df[df['Title'] == 'Mr']['Age'].dropna())\n",
    "    mean_ages[3]=np.average(df[df['Title'] == 'Master']['Age'].dropna())\n",
    "    df.loc[ (df.Age.isnull()) & (df.Title == 'Miss') ,'AgeFill'] = mean_ages[0]\n",
    "    df.loc[ (df.Age.isnull()) & (df.Title == 'Mrs') ,'AgeFill'] = mean_ages[1]\n",
    "    df.loc[ (df.Age.isnull()) & (df.Title == 'Mr') ,'AgeFill'] = mean_ages[2]\n",
    "    df.loc[ (df.Age.isnull()) & (df.Title == 'Master') ,'AgeFill'] = mean_ages[3]\n",
    "\n",
    "    df['AgeCat']=df['AgeFill']\n",
    "    df.loc[ (df.AgeFill<=10) ,'AgeCat'] = 'child'\n",
    "    df.loc[ (df.AgeFill>60),'AgeCat'] = 'aged'\n",
    "    df.loc[ (df.AgeFill>10) & (df.AgeFill <=30) ,'AgeCat'] = 'adult'\n",
    "    df.loc[ (df.AgeFill>30) & (df.AgeFill <=60) ,'AgeCat'] = 'senior'\n",
    "\n",
    "    df.Embarked = df.Embarked.fillna('S')\n",
    "\n",
    "\n",
    "    df.loc[ df.Cabin.isnull()==True,'Cabin'] = 0.5\n",
    "    df.loc[ df.Cabin.isnull()==False,'Cabin'] = 1.5\n",
    "\n",
    "    df['Fare_Per_Person']=df['Fare']/(df['Family_Size']+1)\n",
    "\n",
    "    #Age times class\n",
    "\n",
    "    df['AgeClass']=df['AgeFill']*df['Pclass']\n",
    "    df['ClassFare']=df['Pclass']*df['Fare_Per_Person']\n",
    "\n",
    "\n",
    "    df['HighLow']=df['Pclass']\n",
    "    df.loc[ (df.Fare_Per_Person<8) ,'HighLow'] = 'Low'\n",
    "    df.loc[ (df.Fare_Per_Person>=8) ,'HighLow'] = 'High'\n",
    "\n",
    "\n",
    "\n",
    "    le.fit(df['Sex'] )\n",
    "    x_sex=le.transform(df['Sex'])\n",
    "    df['Sex']=x_sex.astype(np.float)\n",
    "\n",
    "    le.fit( df['Ticket'])\n",
    "    x_Ticket=le.transform( df['Ticket'])\n",
    "    df['Ticket']=x_Ticket.astype(np.float)\n",
    "\n",
    "    le.fit(df['Title'])\n",
    "    x_title=le.transform(df['Title'])\n",
    "    df['Title'] =x_title.astype(np.float)\n",
    "\n",
    "    le.fit(df['HighLow'])\n",
    "    x_hl=le.transform(df['HighLow'])\n",
    "    df['HighLow']=x_hl.astype(np.float)\n",
    "\n",
    "\n",
    "    le.fit(df['AgeCat'])\n",
    "    x_age=le.transform(df['AgeCat'])\n",
    "    df['AgeCat'] =x_age.astype(np.float)\n",
    "\n",
    "    le.fit(df['Embarked'])\n",
    "    x_emb=le.transform(df['Embarked'])\n",
    "    df['Embarked']=x_emb.astype(np.float)\n",
    "\n",
    "    df = df.drop(['PassengerId','Name','Age','Cabin'], axis=1) #remove Name,Age and PassengerId\n",
    "\n",
    "\n",
    "    return df\n",
    "\n",
    "#读取数据\n",
    "traindf=pd.read_csv(train_file)\n",
    "##清洗数据\n",
    "df=clean_and_munge_data(traindf)\n",
    "########################################formula################################\n",
    " \n",
    "formula_ml='Survived~Pclass+C(Title)+Sex+C(AgeCat)+Fare_Per_Person+Fare+Family_Size' \n",
    "\n",
    "y_train, x_train = dmatrices(formula_ml, data=df, return_type='dataframe')\n",
    "y_train = np.asarray(y_train).ravel()\n",
    "print y_train.shape,x_train.shape\n",
    "\n",
    "##选择训练和测试集\n",
    "X_train, X_test, Y_train, Y_test = train_test_split(x_train, y_train, test_size=0.2,random_state=seed)\n",
    "#初始化分类器\n",
    "clf=RandomForestClassifier(n_estimators=500, criterion='entropy', max_depth=5, min_samples_split=1,\n",
    "  min_samples_leaf=1, max_features='auto',    bootstrap=False, oob_score=False, n_jobs=1, random_state=seed,\n",
    "  verbose=0)\n",
    "\n",
    "###grid search找到最好的参数\n",
    "param_grid = dict( )\n",
    "##创建分类pipeline\n",
    "pipeline=Pipeline([ ('clf',clf) ])\n",
    "grid_search = GridSearchCV(pipeline, param_grid=param_grid, verbose=3,scoring='accuracy',\\\n",
    "cv=StratifiedShuffleSplit(Y_train, n_iter=10, test_size=0.2, train_size=None, indices=None, \\\n",
    "random_state=seed, n_iterations=None)).fit(X_train, Y_train)\n",
    "# 对结果打分\n",
    "print(\"Best score: %0.3f\" % grid_search.best_score_)\n",
    "print(grid_search.best_estimator_)\n",
    "report(grid_search.grid_scores_)\n",
    " \n",
    "print('-----grid search end------------')\n",
    "print ('on all train set')\n",
    "scores = cross_val_score(grid_search.best_estimator_, x_train, y_train,cv=3,scoring='accuracy')\n",
    "print scores.mean(),scores\n",
    "print ('on test set')\n",
    "scores = cross_val_score(grid_search.best_estimator_, X_test, Y_test,cv=3,scoring='accuracy')\n",
    "print scores.mean(),scores\n",
    "\n",
    "# 对结果打分\n",
    "\n",
    "print(classification_report(Y_train, grid_search.best_estimator_.predict(X_train) ))\n",
    "print('test data')\n",
    "print(classification_report(Y_test, grid_search.best_estimator_.predict(X_test) ))\n",
    "\n",
    "model_file=MODEL_PATH+'model-rf.pkl'\n",
    "joblib.dump(grid_search.best_estimator_, model_file)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
